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...