sleep和wait的區別

2021-06-21 05:32:24 字數 813 閱讀 2424

s

leep()丟擲的異常必須try{}catch{},不能throws因為重寫方法的異常範圍不能超出被重寫方法的異常範圍   

sleep是執行緒被呼叫時,佔著cpu去睡覺,其他執行緒不能占用cpu,os認為該執行緒正在工作,不會讓出系統資源,wait是進入等待池等待,讓出系統資源,其他執行緒可以占用cpu,一般wait不會加時間限制,因為如果wait的執行緒執行資源不夠,再出來也沒用,要等待其他執行緒呼叫notifyall方法喚醒等待池中的所有執行緒,才會在進入就緒序列等待os分配系統資源, 

sleep是靜態方法,是誰掉的誰去睡覺,就算是在main執行緒裡呼叫了執行緒b的sleep方法,實際上還是main去睡覺,想讓執行緒b去睡覺要在b的**中掉sleep

sleep(100l)是占用cpu,執行緒休眠100毫秒,其他程序不能再占用cpu資源,wait(100l)是進入等待池中等待,交出cpu等系統資源供其他程序使用,在這100毫秒中,該執行緒可以被其他執行緒notify,但不同的是其他在等待池中的執行緒不被notify不會出來,但這個執行緒在等待100毫秒後會自動進入就緒佇列等待系統分配資源,換句話說,sleep(100)在100毫秒後肯定會執行,但wait在100毫秒後還有等待os呼叫分配資源,所以wait100的停止執行時間是不確定的,但至少是100毫秒。

sleep就是睡自己的覺,讓別人吵吵去(睡到定點醒)

wait就是等**,**來了立刻接,其它時間也在睡(睡到有人叫)

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

sleep和wait的區別

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

sleep 和 wait的區別

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

sleep和wait的區別

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