1. 程式人生 > >Java併發之sleep() 和 wait(n) 、 wait() 的區別

Java併發之sleep() 和 wait(n) 、 wait() 的區別

sleep() 和 wait(n) 、 wait() 的區別

答:

  1. sleep 方法:是 Thread 類的靜態方法,當前執行緒將睡眠 n 毫秒,執行緒進入阻塞狀態。當睡眠時間到了,會接觸阻塞,進入可執行狀態,等待 CPU 的到來。睡眠不釋放鎖(如果有的話)
  2. wait 方法:是 Object 的方法,必須與 synchronized 關鍵字一起使用,執行緒進入阻塞狀態,當 notify 或者 notifyall 被呼叫後,會接觸阻塞。但是,只有重新佔用互斥鎖之後才會進入可執行狀態睡眠時,釋放互斥鎖
特點/方法 如何喚醒? 如何進入可執行狀態? 是否釋放鎖?
sleep() 睡眠時間結束則接觸阻塞 接觸阻塞後進入可執行狀態 不釋放鎖
wait() 被notify或notifyAll呼叫後接觸阻塞 只有重新佔用互斥鎖之後才會進入可執行狀態 釋放互斥鎖