sleep 和wait 的區別

2021-09-25 22:29:47 字數 774 閱讀 5447

sleep()和wait()都可以使執行緒暫時的停止執行,他們有什麼區別呢?

1、sleep()是thread中的方法,wait()是object中的方法;

2、sleep()不會釋放同步鎖,即當該執行緒呼叫sleep()時不會讓出資源來執行其他執行緒執行同步塊或同步方法,其他執行緒還是要一直等到該執行緒執行完同步塊或同步方法,執行緒呼叫wait()後,會釋放同步鎖,該執行緒會掛起,進入等待區,讓出資源來讓其他執行緒執行同步塊或同步方法,直到呼叫notify來喚醒或者到達執行時間後,執行緒才會準備執行。

public

class

test9

}class

mythread1

implements

runnable

catch

(interruptedexception e)

system.out.

println

("mythread1 is going on");

system.out.

println

("mythread1 over");

}}}class

mythread2

implements

runnable

}}

執行結果:

mythread1…running

mythread2…running

mythread2 over

mythread1 is going on

mythread1 over

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