Java中wait和sleep區別

2021-07-12 04:48:22 字數 929 閱讀 8838

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...