最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java Object wait方法詳細介紹

 更新時間:2017年02月17日 14:05:49   投稿:lqh  
這篇文章主要介紹了java Object wait方法詳細介紹的相關(guān)資料,需要的朋友可以參考下

java Object wait方法

當線程B訪問某個共享資源時,想獲取資源的鎖對象,發(fā)現(xiàn)這個鎖已經(jīng)被線程A拿到了,這個時候,線程B只能被掛起,等待線程A釋放鎖。

但是拿到鎖的線程A在執(zhí)行的過程中,因為某些條件還不滿足,暫時不想繼續(xù)執(zhí)行下去,想先等待一下(注意:是已經(jīng)拿到鎖的線程A自己想主動等待的),希望等到某個條件滿足后,繼續(xù)執(zhí)行任務。在同步代碼塊里,線程A必須先釋放鎖,線程B才有資格獲取鎖,進入同步代碼塊,執(zhí)行代碼。等線程B執(zhí)行完后,線程A需要的條件已經(jīng)滿足,那么這個時候必須有一個通知機制,讓線程A從等待狀態(tài)變成執(zhí)行狀態(tài),繼續(xù)執(zhí)行代碼。

有些同學認為線程A也可以一直循環(huán)判斷,檢查條件是否已經(jīng)滿足,而不一定要中斷自己,然后等待。其實這種也是一種思路,但是呢?比較耗CPU,而且也不知道條件何時才能滿足。

線程之間要協(xié)調(diào)溝通,必須有一個等待機制和通知機制,在JAVA里面,對應的就是wait方法和notify方法。

Object的wait方法

 
synchronized (obj) {
    while (condition does not ok){
      obj.wait();
    }
 }

如果想讓線程A處于等待狀態(tài),可以調(diào)用當前對象wait方法。wait方法一旦被調(diào)用,也就意味著:線程A已經(jīng)獲得鎖了,而且能做的事情都已經(jīng)做了,現(xiàn)在只能等待了,等待另外的同步操作執(zhí)行某些代碼后,我才回來繼續(xù)干活。

注意:

wait方法是定義在根類Object上的,Thread繼承自Object類,自然也有wait方法。但是這里并不是調(diào)用當前線程對象的wait方法,而是具有鎖屬性的當前對象的wait方法;這一點我也不太理解,我覺得要做到線程A切換到等待狀態(tài),之后被人喚醒,就算使用線程A的wait方法和notify方法其實也是可以做到的,但是估計實現(xiàn)起來非常麻煩。另外從場景上看,wait定義在Object也比較合理,表示線程掛在了對象的等待池中。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Spring-AOP @AspectJ切點函數(shù)之@annotation()用法

    Spring-AOP @AspectJ切點函數(shù)之@annotation()用法

    這篇文章主要介紹了Spring-AOP @AspectJ切點函數(shù)之@annotation()用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之棧

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之棧

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之棧 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java?HashSet添加?遍歷元素源碼分析

    Java?HashSet添加?遍歷元素源碼分析

    這篇文章主要為大家詳細介紹了HashSet、HashMap底層添加、遍歷元素的機制,追蹤并分析源碼,文中的示例代碼講解詳細,希望對大學有所幫助
    2022-07-07
  • MyBatis5中Spring集成MyBatis事物管理

    MyBatis5中Spring集成MyBatis事物管理

    這篇文章主要介紹了MyBatis5中MyBatis集成Spring事物管理的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Java圓通物流軌跡推送服務接口文檔及流程

    Java圓通物流軌跡推送服務接口文檔及流程

    這篇文章主要介紹了圓通物流軌跡推送服務接口Java文檔,主要用來接收圓通推送的訂單狀態(tài),本文給大家分享詳細流程,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Spring?Boot?整合?Fisco?Bcos部署、調(diào)用區(qū)塊鏈合約的案例

    Spring?Boot?整合?Fisco?Bcos部署、調(diào)用區(qū)塊鏈合約的案例

    本篇文章介紹?Spring?Boot?整合?Fisco?Bcos?的相關(guān)技術(shù),最最重要的技術(shù)點,部署、調(diào)用區(qū)塊鏈合約的工程案例,本文通過流程分析給大家介紹的非常詳細,需要的朋友參考下吧
    2022-01-01
  • JUnit5常用注解的使用

    JUnit5常用注解的使用

    注解是JUnit的標志性技術(shù),本文就來對它的20個注解,以及元注解和組合注解進行學習,感興趣的可以了解一下
    2021-07-07
  • Java超詳細講解多態(tài)的調(diào)用

    Java超詳細講解多態(tài)的調(diào)用

    多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時并不確定,而是在程序運行期間才確定,即一個引用變量到底會指向哪個類的實例對象,該引用變量發(fā)出的方法調(diào)用到底是哪個類中實現(xiàn)的方法,必須在由程序運行期間才能決定
    2022-05-05
  • Java連接數(shù)據(jù)庫的步驟介紹

    Java連接數(shù)據(jù)庫的步驟介紹

    這篇文章介紹了Java連接數(shù)據(jù)庫的步驟,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • SpringCloud集成sleuth和zipkin實現(xiàn)微服務鏈路追蹤的實戰(zhàn)分享

    SpringCloud集成sleuth和zipkin實現(xiàn)微服務鏈路追蹤的實戰(zhàn)分享

    最近項目上準備引入接口調(diào)用鏈路追蹤,說到這個我們就不得不想到springcloud全家桶中的sleuth了,他可以將跨多個服務請求鏈路記錄下來,供我們查詢分析,所以今天就分享一期微服務架構(gòu)接入sleuth+zipkin實戰(zhàn)演示,需要的朋友可以參考下
    2024-12-12

最新評論

包头市| 牟定县| 区。| 勐海县| 宁夏| 常山县| 河池市| 黑水县| 南华县| 宝兴县| 桐柏县| 阿荣旗| 丁青县| 蕉岭县| 丰城市| 盘山县| 个旧市| 红原县| 铜陵市| 长岭县| 汉阴县| 西充县| 德安县| 肃宁县| 周口市| 鹿泉市| 泰和县| 四子王旗| 巴楚县| 赣榆县| 玉龙| 宁化县| 刚察县| 乐清市| 谢通门县| 莲花县| 舒城县| 德安县| 苏州市| 英超| 普陀区|