多執行緒之sleep和wait的區別

2021-09-25 16:30:11 字數 358 閱讀 1816

使當前執行緒睡眠,但是並不釋放鎖

sleep是thread類的方法

sleep可以用在任何地方

sleep必須捕獲異常

使當前程序等待,但是釋放鎖。

wait是object類的方法

wait,包括notify和notifall只能在synchrnized修飾的方法或**塊中使用

sleep不需要捕獲異常

你在人工售票口買票,sleep方法只是讓你站在買票的地點睡會,在睡覺期間別人不能越過你買票。等你醒了就可以直接買票了

但是如果wait方法,你就需要離開當前的位置,一邊去等著,這時候後面排隊的人是可以上前一步去買票的,當有notify通知你可以買票了,你還得老老實實排隊去

多執行緒wait 和sleep 的區別

wait 位於同步中,可以釋放鎖的資源 sleep 不是釋放鎖的資源 wait需要notify才能從休眠狀態變為執行狀態,sleep到期之後,會自動從休眠狀態變為執行狀態。官方話語如下 對於sleep 方法,我們首先要知道該方法是屬於thread類中的。而wait 方法,則是屬於object類中的。...

多執行緒學習 wait和sleep區別

1.wait可以指定時間也可以不指定,sleep必須指定時間。2.在同步是,對cpu的執行權和鎖的處理不同 知識點 執行權,有執行權,那麼意味了一直占用cpu在執行,其它執行緒分配不到cpu wait 釋放執行權,釋放鎖 很好理解,不指定時間,那麼他必須要等別人喚醒,如果不釋放鎖和執行權,那麼其他執...

多執行緒之sleep

還是使用join 學習的例子。實驗 如下 package thread public class jointest implements runnable public static void main string args throws exception 實驗結果是0,具體原因見本人部落格多執...