wait 和sleep 的區別

2021-10-12 03:02:14 字數 975 閱讀 8717

對於sleep()方法,我們首先要知道該方法是屬於thread類中的。而wait()方法,則是屬於object類中的。

sleep()方法導致了程式暫停執行指定的時間,讓出cpu該其他執行緒,但是他的監控狀態依然保持者,當指定的時間到了又會自動恢復執行狀態。

在呼叫sleep()方法的過程中,執行緒不會釋放物件鎖。

而當呼叫wait()方法的時候,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫notify()方法後本執行緒才進入物件鎖定池準備

獲取物件鎖進入執行狀態。

public

class

main

catch

(exception e)

newthread

(new

thread2()

).start()

;}private

static

class

thread1

implements

runnable

catch

(exception e)

system.out.

println

("thread1 is going on ....");

system.out.

println

("thread1 is over!!!");

}}}private

static

class

thread2

implements

runnable

catch

(exception e)

system.out.

println

("thread2 is going on....");

system.out.

println

("thread2 is 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...