網頁

2017/10/11

Java 執行緒wait()和sleep()的差異

Java多執行緒中wait()sleep()的差異如下


  • wait()Object的實例方法,但sleep()Thread類別的靜態方法。
  • wait()必須在同步區塊或方法(synchronized block/method)中呼叫,但sleep()不用。
  • 呼叫wait()等待的執行緒可在其他執行緒中呼叫notify()notifyAll()來喚醒,但sleep()只能等指定時間過去才會喚醒。
  • wait()通常在條件式中使用,也就是當條件滿足前都保持在等待的狀態,但sleep()通常只是為了暫緩執行緒的執行。
  • wait()會釋放對物件的鎖,但sleep()不會。
  • wait()是作用在同步區塊中對物件的監控上,但sleep()是直接作用在執行緒。
  • wait()用來處理執行緒之間物件同步的問題,而sleep()是暫緩執行緒的執行。


沒有留言:

張貼留言