java sleep與wait的區別

2021-05-28 02:04:04 字數 773 閱讀 7609

最近被問到這個問題,查詢資料後寫個例子,可看出其中差別。

1、首先wait是object的方法,sleep是thread的方法。

2、object.wait被某執行緒呼叫,要確保該執行緒能監控該物件,否則丟擲illegalmonitorstateexception。之後該執行緒放棄對次object的synchronized要求。此時其他需要

synchronized該object的執行緒可獲得執行權。

thread.sleep使執行緒停滯,不釋放其占用的鎖。

下面的例子可以看清楚差別。

public class t 

}class waitrunner extends thread

public waitrunner(int ms)

public void run() catch (interruptedexception e)

// else

// lock.notify();

system.out.println(getname() + " is end....");

} }}class sleeprunner extends thread

public sleeprunner(int ms)

public void run() catch (interruptedexception e)

system.out.println(getname() + " is end....");

} }}

JAVA sleep與wait的區別

1 sleep用於執行緒控制自身的流程,使自己暫停指定的時間,把執行機會讓給其他執行緒,時間到,則自動甦醒。2 wait為object類的方法 object類中的其他方法見object類的方法簡談 用於執行緒之間的通訊,會使擁有當前物件鎖的執行緒等待,直到其他執行緒呼叫notify或notifyal...

java sleep 和wait 的區別

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

Java sleep和wait例項比較

1 示例 public class testsyncro class thread1 extends thread override public void run class thread2 extends thread override public void run class personc...