當前位置:首頁 » 編程語言 » java線程sleep

java線程sleep

發布時間: 2025-09-11 18:53:24

1. java線程中wait、await、sleep、yield、join用法總結

一、wait()、notify()、notifyAll()用法

測試代碼:

列印日誌:

從日誌中我們可以看出waitTest方法阻塞直到被notifyTest喚醒。

二、await()、signal()、signalAll()用法

java.util.concurrent類庫中提供的Condition類來實現線程之間的協調。

測試代碼:

列印日誌:

從日誌中可以看出我們得到了和wait同樣的效果。

三、yield()、join()用法

yield測試代碼:

列印結果:

可以看出雖然主線程調用了yield,但是仍然又開始執行了,因此並不能保證輪流執行。

join測試代碼:

列印日誌:

從日誌中我們可以看出主線程在線程執行完成後才開始執行。

四、wait()、await()、sleep()、yield、join對比

通過表格對比(join的情況下,t1指代當前線程,t2代表其他線程)

2. Java線程中wait、await、sleep、yield、join用法總結

Java線程中wait、await、sleep、yield、join用法總結

1. wait 用法:wait方法用於使當前線程等待,直到其他線程調用此對象的notify或notifyAll方法將其喚醒。調用wait方法時,線程必須擁有該對象的監視器。 特點:wait是Object類的方法,必須在同步代碼塊或同步方法中調用。

2. await 用法:await方法用於使當前線程等待,直到另一個線程調用與當前await調用關聯的Condition對象的signal或signalAll方法。與wait不同,await屬於java.util.concurrent.locks.Condition介面,通常與ReentrantLock一起使用。 特點:await需要在lock.lock和lock.unlock之間調用,以實現更靈活的線程同步。

3. sleep 用法:sleep方法使當前線程休眠指定的毫秒數。線程在休眠期間不會釋放任何監視器。 特點:sleep是Thread類的方法,用於控制線程的執行節奏,但不涉及線程間的通信。

4. yield 用法:yield方法提示調度器當前線程願意放棄當前對處理器的使用。調度器可以忽略這個提示。 特點:yield是Thread類的方法,通常用於提高程序的並發性能,但不能保證線程會立即放棄處理器。

5. join 用法:join方法使當前線程等待,直到調用join方法的線程執行完畢。這可以用於確保某些線程在繼續執行之前完成其任務。 特點:join是Thread類的方法,常用於控制線程的執行順序。

總結對比

  • wait、await:都用於使線程等待,但wait是Object類的方法,通常與synchronized一起使用;await是Condition介面的方法,通常與ReentrantLock一起使用。
  • sleep:使線程休眠,不涉及線程間的通信。
  • yield:提示調度器當前線程願意放棄處理器,但不保證立即放棄。
  • join:使當前線程等待另一個線程執行完畢,常用於控制線程執行順序。
熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:880
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:676
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1004
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:248
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:798
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705