国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java Exchanger交換線程

劉德剛 / 658人閱讀

摘要:使用一個交換兩個線程的數據,交換期間該會被鎖住,一般用于通信領域。當雙方完成交換后,交換的就為的返回值。必須指定返回值的,否則該生產者生產的將不會與消費者的空進行交換。

Exchanger 使用一個pipeline交換兩個線程的數據,交換期間該Slot會被鎖住,一般用于通信領域。
該類提供兩個方法

  

// k為交換對象
exchange(V k)
//指定超時時間
exchange(V k, int timeOut, TimeUnit unit)

使用時,除了參數k必須外,返回值也必須使用k接收,否則會出現接收不到的數據的情況,如:

//生產者線程
ProductBean bean= new ProductBean()
// 設置Product屬性
bean.set()....
// 生產完成,開始與消費者交換
bean = Exchanger實例名.exchange(bean)

// 消費者線程
ProductBean bean = new ProductBean();
bean = Exchanger實例名.exchange(bean)

生產者將生產的ProductBean放入pipeline中,等待交換。消費者將空Bean放入pipeline等待交換。不論是生產者還是消費者都必須接收exchange方法的返回值,即將exchange的bean賦值給bean。當雙方完成交換后,交換的bean就為exchange的返回值。
必須指定返回值的bean,否則該生產者生產的bean將不會與消費者的空bean進行交換。

關于該類的最詳細解釋當屬于源碼中的關于算法的注釋,這一部分并沒有顯示在doc文檔中,必須看源碼才能看見。該注釋中說到

  

The basic idea is to maintain a "slot", which is a reference to a Node containing both an Item to offer and a "hole" waiting to get filled in.

  

最基本的思想是維護一個Slot(槽),該Slot指向一個包含有一個用于交換的Item和一個等待填充的hole的Node。

該hole其實是用于接收交換的Node.

該算法解釋分為五部分,

Waiting

Sizing

Hashing

Probing

Padding

此外,該類的作者Doug Lea,還附上了一篇關于此思想的論文A Scalable Elimination-based Exchange Channel,可免費獲得。

有同學做了如下圖,比較淺顯易懂。

關于此圖的解釋請移步至深入淺出 Java Concurrency (26): 并發容器 part 11 Exchanger

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64115.html

相關文章

  • java并發編程學習之Exchanger

    摘要:作用用來交換兩個線程的數據。示例運行結果如下首先,會經過三秒后,才輸出結果,說明兩個線程沒交換之前是阻塞的。 作用 用來交換兩個線程的數據。 示例 public class ExchangerDemo { static Exchanger exchanger = new Exchanger(); static class Thread1 extends Thread ...

    lingdududu 評論0 收藏0
  • (十二)java線程Exchanger

    摘要:本人郵箱歡迎轉載轉載請注明網址代碼已經全部托管有需要的同學自行下載引言今天我們講最后一個同步工具類這個比較簡單就是讓兩個線程交換數據理論只有兩個方法而已而且兩個還是一樣的只是參數不通而已跟另外一個線程交換數據如果另外一個線程的數據準備好那么 本人郵箱: 歡迎轉載,轉載請注明網址 http://blog.csdn.net/tianshi_kcogithub: https://github...

    Flands 評論0 收藏0
  • Java線程進階(一)—— J.U.C并發包概述

    摘要:整個包,按照功能可以大致劃分如下鎖框架原子類框架同步器框架集合框架執行器框架本系列將按上述順序分析,分析所基于的源碼為。后,根據一系列常見的多線程設計模式,設計了并發包,其中包下提供了一系列基礎的鎖工具,用以對等進行補充增強。 showImg(https://segmentfault.com/img/remote/1460000016012623); 本文首發于一世流云專欄:https...

    anonymoussf 評論0 收藏0
  • Java線程編程之同步器

    摘要:倒計時鎖,線程中調用使進程進入阻塞狀態,當達成指定次數后通過繼續執行每個線程中剩余的內容。實現分階段的的功能測試代碼拿客網站群三產創建于年月日。 同步器 為每種特定的同步問題提供了解決方案 Semaphore Semaphore【信號標;旗語】,通過計數器控制對共享資源的訪問。 測試類: package concurrent; import concurrent.th...

    liangdas 評論0 收藏0
  • Java并發

    摘要:對象改變條件對象當前線程要等待線程終止之后才能從返回。如果線程在上的操作中被中斷,通道會被關閉,線程的中斷狀態會被設置,并得到一個。清除線程的中斷狀態。非公平性鎖雖然可能造成饑餓,但極少的線程切換,保證其更大的吞吐量。 聲明:Java并發的內容是自己閱讀《Java并發編程實戰》和《Java并發編程的藝術》整理來的。 showImg(https://segmentfault.com/im...

    SKYZACK 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<