日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 中sleep()与wait()的区别

發布時間:2023/12/13 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 中sleep()与wait()的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 一、原理不同
    • 二、鎖的處理機制不同
    • 三、使用的區域不同
    • 四、異常捕獲不同
    • 五、總結

一、原理不同


  • sleep()是Thread類的靜態方法,是線程用來控制自身流程的,它會使此線程暫停執行指定的時間,而把執行機會讓給其他的線程,等到計時時間到,此線程會自動蘇醒。

  • wait()是Object類的方法,用于線程間的通信,這個方法會使當前擁有該對象鎖的進程等待,直到其他線程調用notify()方法才醒來,也可以指定時間自己醒來。


二、鎖的處理機制不同


  • sleep()方法的主要作用是讓線程休眠指定一段時間,在時間到時自動恢復,不涉及線程間的通信,因此,調用sleep()方法并不會釋放掉鎖

  • 調用wait()方法的時候,線程會釋放掉它所占用的鎖,從而使線程所在對象中的其他synchronized數據可以被其他線程使用。


三、使用的區域不同


  • sleep()方法則可以放在任何地方使用。

  • wait()必須放在同步控制方法或者同步語句塊中使用。


四、異常捕獲不同


  • sleep()方法必須捕獲異常,在sleep()的過程中,有可能別的其他對象調用其interrupt(),產生InterruptedException異常。

  • wait(),notify()以及notifyall()不需要捕獲異常。


五、總結


sleep()不會釋放鎖標志,容易導致死鎖的發生,所以一般情況下,不推薦使用sleep方法,而是使用wait方法。

總結

以上是生活随笔為你收集整理的Java 中sleep()与wait()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。