java中的sleep和wait的區別

2021-05-21 00:10:06 字數 4777 閱讀 1452

1樓:尚學堂科技****

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

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

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

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

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()不釋放同步鎖,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的區別

6樓:育知同創教育

sleep()方法是屬於

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

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

7樓:南風

sleep釋放鎖 wait不釋放鎖,

java中的sleep和wait的區別

8樓:磨礪營

對於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!!!

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

9樓:華清遠見

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

主要區別在於:

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

JAVA中this和this的區別

public classname public classname string a public static void main string args 執行結果就是 sssssssssssss asdf this 就是呼叫自己的無參構造方法,和super 一個道理。this就是指本物件自身。j...

java中的Character和char的區別

character 是 char 的包裝類,char是基礎資料型別,而 character是類,是物件 character封閉了一系列對char的操作 例如判斷大小寫,轉換大小寫等等 java中的character和char的區別 character是一個char類,char是一個型別,你可以把一個...

java中stringreplace和stringreplaceall的區別及

replace是單純的替換字串,而replaceall是替換匹配的正規表示式。以下為jdk api的doc說明 replace charsequence target,charsequence replacement 使用指定的字面值替換序列替換此字串所有匹配字面值目標序列的子字串。replacea...