執行緒狀態&&Wait和sleep的區別?
執行緒堆疊內容解析:
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
本文轉自屌絲逆襲部落格51CTO部落格,原文連結http://blog.51cto.com/5731674/2086757如需轉載請自行聯絡原作者
_追隨我心
相關文章
- java執行緒中yield(),sleep(),wait()區別詳解Java執行緒AI
- Systrace 執行緒 CPU 執行狀態分析技巧 - Sleep 和 Uninterruptible Sleep 篇執行緒
- 多執行緒面試題之sleep()和wait()方法有什麼區別?執行緒面試題AI
- sleep()和wait()區別AI
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- 併發程式設計——執行緒中sleep(),yield(),join(),wait(),notify(),notifyAll()區別程式設計執行緒AI
- sleep與 wait區別AI
- 【Java】sleep和wait區別總結JavaAI
- 執行緒篇2:[- sleep、wait、notify、join、yield -]執行緒AI
- windows執行緒yield以及Sleep(0)和SwitchToThread之間的區別Windows執行緒thread
- 執行緒狀態和鎖執行緒
- 執行緒-sleep()執行緒
- 執行緒6--執行緒的狀態執行緒
- 執行緒狀態執行緒
- 執行緒和程式的區別執行緒
- 程式和執行緒的區別執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java執行緒的狀態Java執行緒
- Memcached 多執行緒和狀態機執行緒
- java執行緒執行緒休眠,sleep方法Java執行緒
- Java執行緒池中執行緒的狀態簡介Java執行緒
- java多執行緒基礎篇(wait、notify、join、sleep、yeild方法)Java執行緒AI
- 執行緒的幾種狀態執行緒
- ssdbgrid中,設了斷點的除錯狀態和執行狀態有區別斷點除錯
- 有狀態和無狀態的區別
- 多執行緒的執行緒狀態及相關操作執行緒
- 執行緒各種狀態執行緒
- 程式和執行緒的區別(Linux)執行緒Linux
- ThreadPollExcutor執行緒池的狀態thread執行緒
- Java 執行緒的5種狀態Java執行緒
- 【Java】執行緒的 6 種狀態Java執行緒
- java執行緒的狀態+鎖分析Java執行緒
- 執行緒的五大狀態執行緒
- JAVA 執行緒的幾種狀態Java執行緒
- 「Learning」區別執行緒和程式執行緒
- Java 執行緒和作業系統的執行緒有啥區別?Java執行緒作業系統
- java yield()和sleep()的區別Java
- MySQL執行緒狀態詳解MySql執行緒