sleep
就是正在執行的執行緒主動讓出
cpu,
cpu去執行其他執行緒,在
sleep
指定的時間過後,
cpu才會回到這個執行緒上繼續往下執行,如果當前執行緒進入了同步鎖,
sleep
方法並不會釋放鎖,即使當前執行緒使用
sleep
方法讓出了
cpu,但其他被同步鎖擋住了的執行緒也無法得到執行。
wait
是指在乙個已經進入了同步鎖的執行緒內,讓自己暫時讓出同步鎖,以便其他正在等待此鎖的執行緒可以得到同步鎖並執行,只有其他執行緒呼叫了
notify
方法(notify
並不釋放鎖,只是告訴呼叫過
wait
方法的執行緒可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因為鎖還在別人手裡,別人還沒釋放。如果
notify
方法後面的**還有很多,需要這些**執行完後才會釋放鎖,可以在
notfiy
方法後增加乙個等待和一些**,看看效果),呼叫
wait
方法的執行緒就會解除
wait
狀態和程式可以再次得到鎖後繼續向下執行。對於
wait
的講解一定要配合例子**來說明,才顯得自己真明白。
package
com.huawei.interview;
public
class multithread catch (interruptedexception e)
new thread(new thread2()).start(); }
private static class thread1 implements runnable
catch (interruptedexception e)
system.out.println("thread1 is going on...");
system.out.println("thread1 is being over!"); }}
}private static class thread2 implements runnable
catch (interruptedexception e)
system.out.println("thread2 is going on...");
system.out.println("thread2 is being 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...