java中的sleep和wait的區別

2021-03-03 20:26:27 字數 4441 閱讀 4691

1樓:育知同創教育

它們最大本質的區別是:sleep()不釋放同步鎖,wait()釋放同步鎖.

還有用法的上的不同是:sleep(milliseconds)可以用時間指定來使他自動醒過來,如果時間不到你只能呼叫interreput()來強行打斷;wait()可以用notify()直接喚起.

sleep和wait的區別還有:

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

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

3。wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在

任何地方使用

synchronized(x)

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

java中的sleep和wait的區別

2樓:千鋒教育

它們最大本質的區別是:sleep()不釋放同步鎖,wait()釋放同步鎖.

還有用法的上的不同是:sleep(milliseconds)可以用時間指定來使他自動醒過來,如果時間不到你只能呼叫interreput()來強行打斷;wait()可以用notify()直接喚起.

sleep和wait的區別還有:

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

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

3。wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在

任何地方使用

synchronized(x)

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

3樓:楓調

對於sleep()方法

,我們首先要知道該方法是屬於thread類中的。而wait()方法,則是屬於object類中的。sleep()方法導致了程式暫停執行指定的時間,讓出cpu該其他執行緒,但是他的監控狀態依然保持者,當指定的時間到了又會自動恢復執行狀態。

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

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

1 /**

2  *

3  */

4 package ***.b510.test;

5 6 /**

7  * java中的sleep()和wait()的區別

8  * @author hongten

9  * @date 2013-12-10

10  */

11 public class testd  catch (exception e)

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

21     }

2223     private static class thread1 implements runnable catch (exception e)

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

36             system.out.println("thread1 is over!!!");

37             }

38         }

39     }

4041     private static class thread2 implements runnable catch (exception e)

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

62                 system.out.println("thread2 is over!!!");

63             }

64         }

65     }

66 }

4樓:代作網i站

sleep不會釋放物件鎖,而wait會釋放

java中的sleep和wait的區別

5樓:育知同創教育

sleep()方法是屬於

thread類中的,而wait()方法,則是屬於object類中的。

sleep()方法會使程式暫停執行指定的時間,讓出cpu給其他執行緒,但是他的監控狀態依然保持著,當指定的時間到了又會自動恢復執行狀態。而且在呼叫sleep()方法的過程中,執行緒不會釋放物件鎖。而當呼叫wait()方法的時候,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫notify()方法後本執行緒才進入物件鎖定池準備獲取物件鎖進入執行狀態。

6樓:南風

sleep釋放鎖 wait不釋放鎖,

java中的sleep和wait的區別

7樓:磨礪營

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

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

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

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

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

什麼意思呢?

舉個列子說明:

1 /**

2 *

3 */

4 package ***.b510.test;

5 6 /**

7 * java中的sleep()和wait()的區別

8 * @author hongten

9 * @date 2013-12-10

10 */

11 public class testd catch (exception e)

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

21 }

2223 private static class thread1 implements runnable catch (exception e)

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

36 system.out.println("thread1 is over!!!");

37 }

38 }

39 }

4041 private static class thread2 implements runnable catch (exception e)

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

62 system.out.println("thread2 is over!!!");

63 }

64 }

65 }

66 }

執行效果:

enter thread1...

thread1 is waiting...

enter thread2....

thread2 is sleep....

thread2 is going on....

thread2 is over!!!

thread1 is going on ....

thread1 is over!!!

如果註釋掉**:

1 testd.class.notify();

執行效果:

enter thread1...

thread1 is waiting...

enter thread2....

thread2 is sleep....

thread2 is going on....

thread2 is over!!!

且程式一直處於掛起狀態。

8樓:華清遠見

sleep和wait都是現成裡面的知識

主要區別在於:

sleep表示睡眠,wait表示等待 sleep需要手動喚醒執行緒,而wait不需要手動喚醒等待結束後自動執行

java中的Character和char的區別

character是一個char類,char是一個型別,你可以把一個定義為char的變數放到character中,java5.0之後,自動裝箱拆箱,在這之前要手動的.java中的character和char的區別 character 是 char 的包裝類,char是基礎資料型別,而 charact...

java中,java中的是什麼意思

首先 和 表示的都是位運 算,例如 2 4表示數字2和4的異或位運算,在運算過程中,首先要版把數字權2和4都轉換為二進位制的,2的二進位制為10,4的二進位制為100,再像我們平時算加減法一樣列成豎式運算,同位不同的運算結果為1,相同的為0,這樣,10和100兩個二進位制數的個位都為0,所以運算出的...

java中frame和panel預設的佈局管理器分別是什麼

1 frame是框架,這個是要實現的功能介面的佈局,預設管理器 borderlayout 2 panel是面板,這個是要實現的某個功能模組的具體實現,預設管理器 flowlayout borderlayout是window frame和dialog的預設佈局管理器,在borderlayout佈局管理...