sleep和wait的區別

2021-08-30 19:33:22 字數 1193 閱讀 1064

sleep和wait的區別

1.sleep是屬於thread的方法,而wait方法是屬於object類的

2.sleep方法物件不會釋放物件鎖,只是會暫停執行的指定時間,但是監控狀態會保持著,當指定時間到了又會執行

當呼叫wait方法的時候,執行緒會釋放物件鎖,進入等待此物件的等待鎖定池,需要執行notify()方法才進入物件鎖定池準備,獲取物件鎖進入執行狀態。

例子:

package com.test;

public class testd catch(exception e)

new thread(new thread2()).start();

}}

package com.test;

public class thread1 implements runnable catch (interruptedexception e)

system.out.println("thread1 is going");

system.out.println("thread1 is over");}}

}

package com.test;

public class thread2 implements runnable catch (exception e)

system.out.println("thread2 is going");

system.out.println("thread2 is over");}}

}

不注釋notify方法的執行結果:

進入 thread1

thread1在等待

進入thread2

thread2在sleeping

thread2 is going

thread2 is over

thread1 is going

thread1 is over

注釋notify方法的執行結果

進入 thread1

thread1在等待

進入thread2

thread2在sleeping

thread2 is going

thread2 is over 

解釋:在sleep方法之後,注釋了notify方法,執行緒進入掛起狀態。

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