最近被問到這個問題,查詢資料後寫個例子,可看出其中差別。
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...