super類不同:
對於sleep()方法是屬於thread類,而wait()方法,則是屬於object類。
是否釋放執行緒鎖 ( ):
在呼叫sleep()方法的過程中,執行緒不會釋放物件鎖。
而當呼叫wait()方法的時候,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫notify()方法後本執行緒才進入物件鎖定池準備
使用範圍:
wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用
synchronized(x)
是否捕獲異常:
sleep必須捕獲異常,而wait,notify和notifyall不需要捕獲異常
是否釋放執行緒鎖的問題:
下面**中本要實現每輸入一次就再輸出一次,但由於sleep函式不釋放執行緒鎖,所以實現功能失敗;
要想實現並且保證同步,只能使用wait,notify函式(釋放執行緒鎖)
class
data
class
input
implements
runnable
public
void run()
else
flag = (flag + 1)%2;
}trycatch (exception e) {}
}}class
output
implements
runnable
public
void run()
trycatch (exception e) {}
}} }}
public
class
correspondencedemo
}
java中wait 和 sleep 區別
1,wait可以指定時間也可以不指定。sleep必須指定時間。2,在同步中時,對cpu的執行權和鎖的處理不同。wait 釋放執行權,釋放鎖。sleep 釋放執行權,不釋放鎖。public class test1 class mythread extends thread override publi...
關於JAVA中sleep和wait
腦殼疼,今天傍晚看到sleep和wait時,頭腦中的概念也的確是模糊不清,然後又是一頓搜尋,明白了不少。1.sleep 是屬於thread類,而wait是屬於object類的且必須和notify或notifyall 一起搭配使用。sleep是執行緒控制自身的流程,而wait則屬於執行緒間通訊。該執行...
java中sleep 和wait 的區別
sleep方法是thread類中定義的方法,而wait方法是object類中定義的方法。每個物件都有乙個鎖來控制同步訪問,synchronized關鍵字可以和物件的鎖互動,來實現同步方法或同步塊。執行sleep 方法的執行緒會主動讓出cpu 然後cpu就可以去執行其他任務 在sleep指定時間後cp...