sleep 與wait 的區別和聯絡

2021-09-23 22:00:20 字數 486 閱讀 8796

1.sleep()thread類中的方法,wait()是object類的方法。

2.sleep()不釋放物件鎖,wait()放棄物件鎖。

3.wait()和sleep()都是讓出cpu佔有權,讓其它執行緒能夠得到執行,不同的地方在於wait()可以通過notify()或者notifyall()主動喚醒或者wait一定的等待時間自動恢復執行,而sleep方法只能在等待一定的時間後自動恢復執行。

4.sleep()可以不在synchronized的塊下呼叫,sleep()不會丟失當前執行緒對任何物件的同步鎖(monitor); wait()必須在synchronized的塊下來使用,呼叫了之後失去對object的monitor, 這樣做的好處是它不影響其它的執行緒對object進行操作。

5.wait()和sleep()都可以通過interrupt()方法打斷執行緒的暫停狀態。

6.wait()進入等待鎖定池,notify()、notifyall()方法可以使其獲得物件鎖,進入就緒狀態。

sleep與wait的區別

sleep與wait的區別 1.都是執行緒狀態切換的操作 2.sleep一定時間後會自動喚醒,wait則需要手動notify或notifyall 3.sleep不會釋放物件鎖,thread方法 wait會放棄物件鎖,是object方法,執行後會進入等待物件鎖池的佇列中 4.notify並不會釋放鎖,...

sleep與wait的區別

sleep 就是正在執行的執行緒主動讓出 cpu,cpu 去執行其他執行緒,在 sleep 指定的時間過後,cpu 才會回到這個執行緒上繼續往下執行,如果當前執行緒進入了同步鎖,sleep 方法並不會釋 放鎖,即使當前執行緒使用 sleep 方法讓出了 cpu,但其他被同步鎖擋住了的執行緒也無 法得...

sleep()與wait()的區別

sleep,wait如例子 店 public class 店 消費麵包 public void take public boolean isempety public boolean isfull 生產者 public class 生產者 implements runnable override p...