標簽(空格分隔): 多線程
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:線程運行結束