Java多線程sleep和wait的區別,總結得非常好
我們都知道sleep是讓線程休眠,到時間後會繼續執行,wait是等待,需要喚醒再繼續執行,那麼這兩種方法在多線程中的表現形態,它們各有什麼區別呢?
可以總結為以下幾點。
使用上
從使用角度看,sleep是Thread線程類的方法,而wait是Object頂級類的方法。
sleep可以在任何地方使用,而wait只能在同步方法或者同步塊中使用。
CPU及資源鎖釋放
sleep,wait調用后都會暫停當前線程並讓出cpu的執行時間,但不同的是sleep不會釋放當前持有的對象的鎖資源,到時間後會繼續執行,而wait會放棄所有鎖並需要notify/notifyAll后重新獲取到對象鎖資源后才能繼續執行。
異常捕獲
sleep需要捕獲或者拋出異常,而wait/notify/notifyAll不需要。
Advertisements
推薦書籍
Spring Cloud微服務實戰
JavaEE開發的顛覆者 Spring Boot實戰
SpringBoot揭秘 快速構建微服務體系
SpringBoot實戰
精通Spring+4.x++企業應用開發實戰
獲取所有高清電子書下載請到274435854。
關注我們
看完有沒有收穫?分享到朋友圈給更多的人吧。
架構之路,頭條精選,每天一篇乾貨,喜歡就收藏+關注吧!