玩轉併發 Worker Thread設計模式

2021-09-11 01:20:15 字數 2166 閱讀 8605

worker thread設計模式有時也稱為流水線設計模式,這種設計模式類似於工廠流水線。在worker thread模式中,工人執行緒worker thread會逐個取回工作並進行處理,當所有工作全部完成後,工人執行緒會等待新的工作到來。

類名說明

request

發起請求的類

channel

流水線:接收請求並將請求推送給送人

transportthread

搬運工:將請求推送到流水線

workerthread

流水線工人:執行請求

chanel

public

class

channel

private

void

init()

}/**

* push switch to start all of worker to work

*/public

void

startworker()

}//裝請求

public

synchronized

void

put(request request)

catch

(interruptedexception e)

}this

.requestqueue[tail]

=request;

//求餘迴圈

this

.tail=

(tail+1)

%requestqueue.length;

this

.count++

;this

.notifyall()

;}//拿請求

public

synchronized request take()

catch

(interruptedexception e)

} request request=requestqueue[head]

;this

.head=

(this

.head+1)

%requestqueue.length;

this

.count--

;this

.notifyall()

;return request;

}}

request

public

class

request

public string getname()

public

intgeti()

public

void

execute()

}

transportthread

public

class

transportthread

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)}}

}

workerthread

public

class

workthread

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)}}

}

測試類:

public

static

void

main

(string[

] args)

throws interruptedexception

列印結果:

worker3–executedrequest [name=reyco, i=12]

worker1–executedrequest [name=reyco, i=13]

worker2–executedrequest [name=reyco, i=14]

玩轉併發 深入AQS和CountDownLatch

countdownlatch中count down是倒數的意思,latch則是門閂的含義。整體含義可以理解為倒數的門栓,似乎有一點 三二一,芝麻開門 的感覺。countdownlatch的作用也是如此,在構造countdownlatch的時候需要傳入乙個整數n,在這個整數 倒數 到0之前,主線程需要...

玩轉併發 Semaphore訊號量

semaphore通常用於限制可以訪問某些資源的執行緒陣列。semaphore稱為計數訊號量,它允許n個任務同時訪問某個資源,可以將訊號量看作是在向外分發使用資源的許可證,只有成功獲取許可證,才能使用資源。demo 利用semphore製作lock public static void lock t...

玩轉併發 多執行緒Count Down設計模式

count down設計模式其實也叫做latch 閥門 設計模式。當若干個執行緒併發執行完某個特定的任務,然後等到所有的子任務都執行結束之後再統一彙總。jdk自帶countdownlatch public static void main string args throws interrupted...