執行緒中sleep和wait的區別

2021-07-11 12:26:35 字數 779 閱讀 6150

1,這兩個方法來自不同的類分別是thread和object;

2,最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法;

3,wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何時候都可以使用;

4,sleep必須捕獲異常,而wait,notify和notifyall不需要捕獲異常;

追加描述:1,sleep方法屬於thread類中方法,表示讓乙個執行緒進入睡眠狀態,等待一定的時間之後,自動醒來進入到可執行狀態,不會馬上進入執行狀態,因為執行緒排程機制恢復執行緒的執行也需要時間,乙個執行緒物件呼叫了sleep方法之後,並不會釋放他所持有的所有物件鎖,所以也就不會影響其他程序物件的執行。但在sleep的過程中過程中有可能被其他物件呼叫它的interrupt(),產生interruptedexception異常,如果你的程式不捕獲這個異常,執行緒就會異常終止,進入terminated狀態,如果你的程式捕獲了這個異常,那麼程式就會繼續執行catch語句塊(可能還有finally語句塊)以及以後的**。 2,

wait屬於object的成員方法,一旦乙個物件呼叫了wait方法,必須要採用notify()和notifyall()方法喚醒該程序;如果執行緒擁有某個或某些物件的同步鎖,那麼在呼叫了wait()後,這個執行緒就會釋放它持有的所有同步資源,而不限於這個被呼叫了wait()方法的物件。wait()方法也同樣會在wait的過程中有可能被其他物件呼叫interrupt()方法而產生

interruptedexception,效果以及處理方式同sleep()方法。

執行緒中sleep 和wait 的區別

建立service類 public class service catch exception e public void xwait sleepthread類 呼叫service中的xsleep方法 public class sleepthread implements runnable publ...

執行緒休眠sleep和wait

我們都知道,休眠執行緒有兩種方法,那就是sleep 和wait 先簡單了解一下這兩個方法 1.sleep 是thread裡的方法 static修飾,類名.呼叫即可 設定的時間一到,自動會醒過來繼續執行 2.wait 是object裡的方法 必須用notify或者notifyall來喚醒 在看黑馬程式...

執行緒sleep 和wait 的區別

1 這兩個方法來自不同的類分別是thread和object 2 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用 使用範圍 4 s...