多執行緒學習 wait和sleep區別

2021-09-24 03:41:10 字數 835 閱讀 9214

1.wait可以指定時間也可以不指定,sleep必須指定時間。

2.在同步是,對cpu的執行權和鎖的處理不同(知識點:執行權,有執行權,那麼意味了一直占用cpu在執行,其它執行緒分配不到cpu)

wait:釋放執行權,釋放鎖(很好理解,不指定時間,那麼他必須要等別人喚醒,如果不釋放鎖和執行權,那麼其他執行緒壓根沒法執行)。

sleep:釋放執行權,不釋放鎖(到了時間自己醒來繼續執行)

/**

* 建立日期:2019-6-4下午12:07:57

* 修改日期:

* 版本: 1.0.0

* 功能說明:

*/package com.lsx.面試題;

/** */

public class 問題2 catch (interruptedexception e)

} }public void method() }}

//1. 問題說明:假設t1,t2,t3同時執行**show(),這個時候假設t1第乙個拿到鎖

//2. t1遇到wait就會釋放執行權和鎖,這個時候t2,t3的流程是一樣的,全部執行了一遍wait,然後全部處於等待狀態。這個時候出現了現象就是三個執行緒都進入了同步**塊。

//理論定義了只能乙個執行緒執行同步**塊。一把鎖同一時刻只能被乙個物件擁有。

//3. t4執行method()方法呼叫notifyall(),這個時候t1,t2,t3將被同事喚醒,這個時候就會出現這個問題,三個執行緒全部被喚醒,wait之後的**怎麼執行

//4. 按照誰第乙個wait的執行緒,進行鎖的分配,所以t1會先獲得鎖,然後執行**,執行完了之後再把鎖給下乙個執行緒

多執行緒wait 和sleep 的區別

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

總結 Java多執行緒中wait和sleep的區別

一 對wait和sleep的個人理解 wait表示等待的意思,當執行緒呼叫wait方法時,執行緒將會處於等待狀態,如果想要再次執行呼叫過wait方法的執行緒需要將其喚醒,使其脫離等待狀態 sleep表示休眠的意思,這種休眠是有時間限制的,休眠時間到了執行sleep方法的執行緒會繼續執行下去 二 區別...

JAVA多執行緒 sleep和wait的區別

1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...