029 執行緒輔助類 Exchanger

2022-09-14 05:45:10 字數 678 閱讀 8813

一 . 概述

該類描述的是乙個交換空間,我們可以理解為我們的生產者和消費者模型之中的緩衝區.

二 . 類結構

構造方法:   

public exchanger()

這個類的構造需要乙個泛型,表示需要交換的資料.

exchange()交換資料.

當傳入null的時候表示從緩衝區中獲取資料.

三 . 例子

我們模擬乙個生產者和消費者的模型

public

class

exchangertest

catch

(interruptedexception e)

}}).start();

new thread(new

runnable()

catch

(interruptedexception e)

}}).start();

}}

注意,我們獲取資料的時候只需要傳入乙個null就能完成任務.

四 . 理解

我們可以將交換空間理解為生產者和消費者模型之中的緩衝區,利用這個緩衝區的概念我們能夠實現執行緒之間的資料交換,實際上著也是一種同步的方式.

因為當交換空間沒有資料的時候,就會阻塞那個獲取執行緒的執行緒,因此這個也算乙個實現執行緒同步的方式.

多執行緒同步輔助類

同步輔助類之訊號量 允許指定共享資源數量,可以允許指定數量的執行緒同時訪問資源 與同步的區別在於,同步時,一次只能乙個執行緒訪問資源 author administrator public class semaphoredemo catch interruptedexception e start ...

執行緒輔助類 五 Phaser

三 使用示例 phaser是一類執行緒輔助類,它可用於在多個執行緒間,在執行過程多個點的每個點進行同步,同時在每個同步點還可執行自定義操作。2.1 new phaser n 定義n個需同步的執行緒,當然也可以執行緒提交執行前使用phaser.register 進行註冊 2.2 重寫onadvance...

多執行緒傳輸檔案輔助類

基類 using system using system.collections.generic using system.text using system.io namespace socketserver set 下一包 public intnextbag 總包數 public intallb...