課程
/后端開發
/Java
/深入淺出Java多線程
Sleep()、suspend()和wait()之間有什么區別?
2016-06-21
源自:深入淺出Java多線程 4-1
正在回答
Thread.sleep()使當前線程在指定的時間處于“非運行”(Not Runnable)狀態。線程一直持有對象的監視器。比如一個線程當前在一個同步塊或同步方法中,其它線程不能進入該塊或方法中。如果另一線程調用了interrupt()方法,它將喚醒那個“睡眠的”線程。
注意:sleep()是一個靜態方法。這意味著只對當前線程有效,一個常見的錯誤是調用t.sleep(),(這里的t是一個不同于當前線程的線程)。即便是執行t.sleep(),也是當前線程進入睡眠,而不是t線程。t.suspend()是過時的方法,使用suspend()導致線程進入停滯狀態,該線程會一直持有對象的監視器,suspend()容易引起死鎖問題。
object.wait()使當前線程出于“不可運行”狀態,和sleep()不同的是wait是object的方法而不是thread。
這回答都是一些文字來的,沒有代碼解釋哦,哈哈!!
舉報
帶你一起深入淺出多線程,掌握基礎,展望進階路線
1 回答?sleep()和wait()區別的區別是什么
2 回答既然wait()方法和return方法都會釋放掉鎖資源 那有什么區別那
1 回答wait和notifyAll
2 回答線程在wait()之后...
1 回答thread與runnable有什么區別
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-06-21
Thread.sleep()使當前線程在指定的時間處于“非運行”(Not Runnable)狀態。線程一直持有對象的監視器。比如一個線程當前在一個同步塊或同步方法中,其它線程不能進入該塊或方法中。如果另一線程調用了interrupt()方法,它將喚醒那個“睡眠的”線程。
注意:sleep()是一個靜態方法。這意味著只對當前線程有效,一個常見的錯誤是調用t.sleep(),(這里的t是一個不同于當前線程的線程)。即便是執行t.sleep(),也是當前線程進入睡眠,而不是t線程。t.suspend()是過時的方法,使用suspend()導致線程進入停滯狀態,該線程會一直持有對象的監視器,suspend()容易引起死鎖問題。
object.wait()使當前線程出于“不可運行”狀態,和sleep()不同的是wait是object的方法而不是thread。
這回答都是一些文字來的,沒有代碼解釋哦,哈哈!!