sleep和wait方法的區別

2021-09-01 11:03:34 字數 745 閱讀 2184

[color=red]sleep和wait的區別:[/color]

[color=red]1、[/color]這兩個方法來自不同的類分別是,[color=blue]sleep來自thread類,和wait來自object類[/color]。

sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的**中呼叫sleep。

[color=red]2、[/color]最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。

sleep不出讓系統資源;wait是進入執行緒等待池等待,出讓系統資源,其他執行緒可以占用cpu。一般wait不會加時間限制,因為如果wait執行緒的執行資源不夠,再出來也沒用,要等待其他執行緒呼叫notify/notifyall喚醒等待池中的所有執行緒,才會進入就緒佇列等待os分配系統資源。sleep(milliseconds)可以用時間指定使它自動喚醒過來,如果時間不到只能呼叫interrupt()強行打斷。

thread.sleep(0)的作用是「觸發作業系統立刻重新進行一次cpu競爭」。

[color=red]3、[/color]使用範圍:wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用

synchronized(x)

[color=red]4、[/color]sleep必須捕獲異常,而wait,notify和notifyall不需要捕獲異常

sleep()和wait 方法的區別

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

sleep和wait 方法的區別

最近學習多執行緒時了解到sleep和wait的區別,特記錄如下 sleep 和 wait 方法的區別 1.sleep是thread的方法,wait是object的方法 2.sleep不會釋放鎖,wait會釋放鎖,並且加入到等候佇列 3.sleep依賴鎖,而wait必須定義鎖 4.sleep不需要喚醒...

sleep和wait的區別

關鍵字 sleep wait 1 這兩個方法來自不同的類分別是thread和object 2 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在...