sleep和wait到底什么区别
生活随笔
收集整理的這篇文章主要介紹了
sleep和wait到底什么区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
wait是在當前線程持有wait對象鎖的情況下,暫時放棄鎖,并讓出CPU資源,并積極等待其它線程調用同一對象的notify或者notifyAll方法。注意,即使只有一個線程在等待,并且有其它線程調用了notify或者notifyAll方法,等待的線程只是被激活,但是它必須得再次獲得鎖才能繼續往下執行。換言之,即使notify被調用,但只要鎖沒有被釋放,原等待線程因為未獲得鎖仍然無法繼續執行。
wait方法需要釋放鎖,前提條件是它已經持有鎖。所以wait和notify(或者notifyAll)方法都必須被包裹在synchronized語句塊中,并且synchronized后鎖的對象應該與調用wait方法的對象一樣。否則拋出IllegalMonitorStateException
sleep方法告訴操作系統至少指定時間內不需為線程調度器為該線程分配執行時間片,并不釋放鎖(如果當前已經持有鎖)。實際上,調用sleep方法時并不要求持有任何鎖。
轉載于:https://www.cnblogs.com/paulbai/p/6156156.html
總結
以上是生活随笔為你收集整理的sleep和wait到底什么区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一手期货多少钱啊?
- 下一篇: CentOS中Mysql常用操作