Condition总结-CountDownLatch
生活随笔
收集整理的這篇文章主要介紹了
Condition总结-CountDownLatch
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
countdownlatch是一個同步工具類,它允許一個或多個線程一直等待,直到其他線程的操作執行完畢再執行。從命名可以解讀到countdown是倒數的意思,類似于我們倒計時的概念
countdownlatch提供了兩個方法,一個是countDown,一個是await,?countdownlatch初始化的時候需要傳入一個整數,在這個整數倒數到0之前,調用了await方法的程序都必須要等待,然后通過countDown來倒數。
使用案例
public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch=new CountDownLatch(3); new Thread(()->{ System.out.println(""+Thread.currentThread().getName()+"-執行中"); countDownLatch.countDown(); System.out.println(""+Thread.currentThread().getName()+"-執行完畢"); },"t1").start(); new Thread(()->{ System.out.println(""+Thread.currentThread().getName()+"-執行中"); countDownLatch.countDown(); System.out.println(""+Thread.currentThread().getName()+"-執行完畢"); },"t2").start(); new Thread(()->{ System.out.println(""+Thread.currentThread().getName()+"-執行中"); countDownLatch.countDown();System.out.println(""+Thread.currentThread().getName()+"-執行完畢"); },"t3").start(); countDownLatch.await(); System.out.println("所有線程執行完畢"); }從代碼的實現來看,有點類似join的功能,但是比join更加靈活。CountDownLatch構造函數會接收一個int類型的參數作為計數器的初始值,當調用CountDownLatch的countDown方法時,這個計數器就會減一。
通過await方法去阻塞去阻塞主流程
模擬高并發場景
static CountDownLatch countDownLatch=new CountDownLatch(1); @Override public void run() { try { countDownLatch.await(); //TODO } catch (InterruptedException e){ e.printStackTrace(); } System.out.println("ThreadName:"+Thread.currentThread().getName()); } public static void main(String[] args) throws InterruptedException { for(int i=0;i<1000;i++){ new Demo().start(); } countDownLatch.countDown(); }總的來說,凡事涉及到需要指定某個人物在執行之前,要等到前置人物執行完畢之后才執行的場景,都可以使用CountDownLatch
?
總結
以上是生活随笔為你收集整理的Condition总结-CountDownLatch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Condition总结-await和si
- 下一篇: Condition总结-CountDow