sleep 和 wait 有什麼區別???

2021-10-21 23:35:55 字數 514 閱讀 4651

sleep()是thread類的方法,執行緒在執行的時候呼叫了sleep()之後會暫停執行,讓出cpu去執行其他執行緒,在sleep指定的時間過後,cpu才會回到這個執行緒上繼續往下執行,但是如果此執行緒也進入了同步鎖,那麼它會讓出cpu卻不會釋放物件鎖,後續需要同步鎖的執行緒也就依然不會執行

wait()是object類的方法,在乙個進入了同步鎖的執行緒內,呼叫wait()方法之後會讓出同步鎖,讓其它正在等待同步鎖執行的執行緒繼續執行,而當前執行緒進如等待此物件的等待鎖定池中,

只有其他執行緒呼叫了notify方法(notify並不釋放鎖,只是告訴呼叫過wait方法的執行緒可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因為鎖還在別人手裡,別人還沒釋放。如果notify方法後面的**還有很多,需要這些**執行完後才會釋放鎖,可以在notfiy方法後增加乙個等待和一些**,看看效果),呼叫wait方法的執行緒就會解除wait狀態和程式可以再次得到鎖後繼續向下執行。

sleep 和 wait 有什麼區別

網上的答案 sleep 是執行緒類 thread 的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫 sleep 不會釋放物件鎖。wait 是object 類的方法,對此物件呼叫 wait 方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池...

sleep 和 wait 有什麼區別?

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

sleep 和 wait 有什麼區別

網上的答案 sleep是執行緒類 thread 的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。wait是object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物...