java線程的park unpark方法


標簽(空格分隔): 多線程


park 和 unpark的使用

park和unpark並不是線程的方法,而是LockSupport的靜態方法

暫停當前線程

LockSupport.park();//所在的線程調用

恢復某個線程的運行

LockSupport.unpark(暫停線程對象)//由另外的線程調用,

park/unpark與wait/notify的區別

wait/notify必須在有鎖的情況下使用(需要關聯Monitor對象),park/unpark沒有這個限制條件。
park/unpark配對使用能夠精確的指定具體的線程的阻塞/運行,notify只能隨機喚醒一個線程
park/unpark配對使用可以先unpark,wait/notify配合使用不能夠先notify。

補充知識:
線程的六種狀態

1.NEW:線程剛剛被創建時,還沒有start()的狀態
2.RUNABLE: Java中的RUNABLE包含了操作系統層面的運行,阻塞,可運行狀態。
操作系統層面的線程的運行,阻塞等在Java層面無法體現出來。
BLOCKED,WAITING,TIMED_WAITINGJava API層面的阻塞
3.TIMED_WAITING:使用sleep方法可能會出現
4.WAITING: 使用join,wait方法后可能會出現
5.BLOCKED:使用synchronize方法可能會出現
6.diey:線程運行結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM