重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
線程堆棧內容解析:
為松溪等地區用戶提供了全套網頁設計制作服務,及松溪網站建設行業解決方案。主營業務為成都網站建設、做網站、松溪網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
Wait和sleep的區別?
共同點:都是把當前線程阻塞住,等待或休眠
不同點:
Wait( ) : 當線程執行到wait()方法上,當前線程會釋放監視鎖,此時其他線程可以占有該鎖,一旦wait()方法執行完成,當前線程繼續持有該鎖,直到執行完鎖的作用域;如下圖:
Sleep( ) : sleep() 和鎖操作無關,如果該方法恰好在一個鎖的保護范圍內,當前線程即使執行sleep的時候,仍然保持監視鎖。。如下圖:
當一個線程占有一個鎖的時候,線程堆棧會打印一個-locked<0x22bffb60>
當一個線程正在等在其他線程釋放該鎖,線程堆棧會打印一個-waiting to lock<0x22bffb60>
當一個線程占有一個鎖,但又執行在該鎖的wait上,線程堆棧中首先打印locked,然后打印-waiting on <0x22c03c60>
線程的狀態
RUNNABLE線程正在運行狀態。(Runnable狀態的線程不一定消耗CPU)
TIMED_WAITING(on object monitor)表示當前線程被掛起一段時間,說明該線程正在執行obj.wait(ing time)方法,該線程不消耗cpu。
TIMED_WAITING(sleeping) 表示當前線程被掛起一段時間,正在執行Thread.sleep(int time )方法,如:
WAITING(on object monitor)當前線程被掛起,正在執行無參數的obj.wait()方法,只能通過notify喚醒,因此不消耗cpu