sleep與wait的區別

2021-08-11 03:31:54 字數 510 閱讀 6396

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希望立即結束執行...