##countdownlatch—閉鎖
使用countdownlatch可以實現類似多執行緒下計數器的功能。
構造器:
1.引數count為計數器
2.呼叫await()方法時,執行緒被掛起,它會等待直到count值為0才繼續執行
過載:public boolean await(long await ,timeunit unit)throw interruptedexception{}//等到一定時間count還沒有減到0,繼續執行。
3.public void countdown(){}
countdownlatch在計數器值減為0之後無法還原——這就是他為什麼值會減為0.
class
sync
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)}}
public
class
test
//呼叫await()方法阻塞當前執行緒,當所有子執行緒執行完畢,主線程恢復執行
latch.
await()
; system.out.
println
("比賽結束");
}}
##cyclicbarrier—迴圈柵欄
通過它,可以讓一組執行緒等待至某個狀態之後再全部執行。叫做回環是因為當所有執行緒都被釋放後,cyclibarrier提供兩個構造器:
public
cyclicbarrier
(int parties, runnable barrieraction)
//多的引數是隨機挑選乙個執行緒恢復執行後所有執行緒恢復執行
public
cyclicbarrier
(int parties)
//所有執行緒到達終點的個數
應用場景:子執行緒在望主記憶體寫資料
引數parties指讓多少個執行緒或者任務等待至barrier狀態;引數barrieraction為當這些執行緒都達到barrier狀態時會恢復執行,恢復執行之前隨機挑選乙個執行任務。
//子執行緒呼叫await方法後將計數器值-1,並進入阻塞狀態;直到計數器值減為0時,所有呼叫await()方法在同時恢復執行,
public
intawait()
throws interruptedexception, brokenbarrierexception
public
intawait
(long timeout, timeunit unit)
throws interruptedexception,
brokenbarrierexception,
timeoutexception
第乙個版本比較常用:直至所有執行緒到達barrier狀態再同時執行後續任務;
第二個版本是讓這些執行緒等待至一定時間,如果還有執行緒沒有達到barrier狀態就直接讓達到barrier的執行緒執行後續任務。
每個cyclicbarrier的計數器可以重複使用
class
sycn
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)
catch
(brokenbarrierexception e)}}
//迴圈柵欄
public
class
test
}}
應用場景:五個裝置,8臺生產個工人,工人輪流使用裝置。
class
factory
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)}}
public
class
main
}}
執行緒資料交換器——
1.構造方法
2.exchanger(),
應用場景:一般用於兩個執行緒交換資料;
首先呼叫exchanger方法的執行緒會阻塞直到有新的執行緒進入緩衝區,
交換彼此執行緒資料再同時恢復執行,
public
class
test
catch
(interruptedexception e)}}
,"大豬豬");
thread1.
start()
; thread thread2=
newthread
(new
runnable()
catch
(interruptedexception e)}}
,"大實時");
thread2.
start()
;}}
Shell四大工具
cut cut的工作就是 剪 具體的說就是在檔案中負責剪下資料用的。cut 命令從檔案的每一行剪下位元組 字元和字段並將這些位元組 字元和字段輸出。1 基本用法 cut 選項引數 filename 說明 預設分隔符是製表符 2 選項引數說明 f 列號,提取第幾列 d 分隔符,按照指定分隔符分割列 c...
四 執行緒的併發工具類
countdownlatch是什麼?countdownlatch,英文翻譯為倒計時鎖存器,是乙個同步輔助類,在完成一組正在其他執行緒中執行的操作之前,它允許乙個或多個執行緒一直等待。閉鎖可以延遲線程的進度直到其到達終止狀態,閉鎖可以用來確保某些活動直到其他活動都完成才繼續執行 countdownla...
Kettle的四大不同環境工具
不多說,直接上乾貨!kettle裡有不同工具,分別用於etl的不同階段。初學者,建議送spoon開始。高手,是四大工具都會用。sqoop 圖形介面工具,快速設計和維護複雜的etl工作流。整合開發環境,提供了乙個圖形使用者介面,用於建立 編輯作業和轉換。sqoon也額可以用於執行 除錯作業或轉換,它也...