sleep 就是正在執行的執行緒主動讓出 cpu,cpu 去執行其他執行緒,在 sleep 指定的時間過後,
cpu 才會回到這個執行緒上繼續往下執行,
如果當前執行緒進入了同步鎖,sleep 方法並不會釋
放鎖,即使當前執行緒使用 sleep 方法讓出了 cpu,但其他被同步鎖擋住了的執行緒也無
法得到執行。wait 是指在乙個已經進入了同步鎖的執行緒內,讓自己暫時讓出同步鎖,以便其他正在
等待此鎖的執行緒可以得到同步鎖並
執行,只有其他執行緒呼叫了 notify 方法(notify 並不釋放
鎖,只是告訴呼叫過 wait 方法的執行緒可以去參與獲得鎖的競爭了,但不是馬
上得到鎖,因
為鎖還在別人手裡,別人還沒釋放。如果 notify 方法後面的**還有很多,需要這些**執
行完後才會釋放鎖,可以在
notfiy 方法後增加乙個等待和一些**,看看效果),呼叫 wait
方法的執行緒就會解除 wait 狀態和程式可以再次得到鎖後繼續向下運 行。
sleep與wait的區別
sleep與wait的區別 1.都是執行緒狀態切換的操作 2.sleep一定時間後會自動喚醒,wait則需要手動notify或notifyall 3.sleep不會釋放物件鎖,thread方法 wait會放棄物件鎖,是object方法,執行後會進入等待物件鎖池的佇列中 4.notify並不會釋放鎖,...
sleep()與wait()的區別
sleep,wait如例子 店 public class 店 消費麵包 public void take public boolean isempety public boolean isfull 生產者 public class 生產者 implements runnable override p...
wait與sleep的區別
執行緒wait 和sleep 的區別 共同點 1.他們都是在多執行緒的環境下,都可以在程式的呼叫處阻塞指定的毫秒數,並返回。2.wait 和sleep 都可以通過interrupt 方法 打斷執行緒的暫停狀態 從而使執行緒立刻丟擲interruptedexception。如果執行緒a希望立即結束執行...