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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Condition接口详解

發(fā)布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Condition接口详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、condition和對象監(jiān)視器

Condition是對象監(jiān)視器的替代品,拓展了監(jiān)視器的語義。

  • 相同:
    都有一組類似的方法:
  • 對象監(jiān)視器: Object.wait()、Object.wait(long timeout)、Object.notify()、Object.notifyAll()。 Condition對象: Condition.await()、Condition.awaitNanos(long nanosTimeout)、Condition.signal()、Condition.signalAll()

    都需要和鎖進行關(guān)聯(lián):

    對象監(jiān)視器: 需要進入synchronized語句塊(進入對象監(jiān)視器)才能調(diào)用對象監(jiān)視器的方法。 Condition對象:需要和一個Lock綁定。
  • 不同:
    Condition拓展的語義方法:
  • awaitUninterruptibly():等待時忽略中斷 awaitUntil(Date deadline) throws InterruptedException:等待到特定日期

    使用方法:

    對象監(jiān)視器: 進入synchronized語句塊(進入對象監(jiān)視器)后調(diào)用Object.wait()。 Condition對象: 需要和一個Lock綁定,并顯示的調(diào)用lock()獲取鎖,然后調(diào)用 Condition.await()

    等待隊列數(shù)量:

    對象監(jiān)視器: 1個。 Condition對象: 多個。通過多次調(diào)用lock.newCondition()返回多個等待隊列。

    二、Condition接口

  • 聲明
  • 等待方法
    不管是發(fā)生中斷還是超時都將繼續(xù)競爭鎖,而不是立即返回,只有再次獲取鎖時才能從等待方法返回(這一點和Object等待方法語義是一致的),根據(jù)中斷狀態(tài)拋出異常。
  • 通知方法
  • 三、Condition接口使用示例

    官方文檔里舉了一個和ArrayBlockingQueue的功能相似的有界塞隊列例子,接下來分析一下

  • 定義
  • put方法
  • get方法

    總結(jié):
    在Condition中,用await()替換wait(),用signal()替換notify(),用signalAll()替換notifyAll(),傳統(tǒng)線程的通信方式,Condition都可以實現(xiàn),這里注意,Condition是被綁定到Lock上的,要創(chuàng)建一個Lock的Condition必須用newCondition()方法。Condition的強大之處在于,對于一個鎖,我們可以為多個線程間建立不同的Condition。如果采用Object類中的wait(), notify(), notifyAll()實現(xiàn)的話,當寫入數(shù)據(jù)之后需要喚醒讀線程時,不可能通過notify()或notifyAll()明確的指定喚醒讀線程,而只能通過notifyAll喚醒所有線程,但是notifyAll無法區(qū)分喚醒的線程是讀線程,還是寫線程。所以,通過Condition能夠更加精細的控制多線程的休眠與喚醒。
  • 重點注意一點:condition的使用必須依賴于lock對象,通過lock對象的newCondition()方法初始化一個condition對象。

    本文參考

    總結(jié)

    以上是生活随笔為你收集整理的Condition接口详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。