CountDownLatch(线程计数器)
生活随笔
收集整理的這篇文章主要介紹了
CountDownLatch(线程计数器)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CountDownLatch(線程計數器)
CountDownLatch 類位于 java.util.concurrent 包下,利用它可以實現類似計數器的功能。比如有一個任務 A,它要等待其他 4 個任務執行完畢之后才能執行,此時就可以利用 CountDownLatch來實現這種功能了。
特點
- countDownLatch這個類使一個線程等待其他線程各自執行完畢后再執行。
- 是通過一個計數器來實現的,計數器的初始值是線程的數量。每當一個線程執行完畢后,計數器的值就-1,當計數器的值為0時,表示所有線程都執行完畢,然后在閉鎖上等待的線程就可以恢復工作了。
主要方法
//阻塞并等待計算歸零 public void await(); //阻塞一段時間,并等待計算歸零,如果超時就停止阻塞 public boolean await(long timeout, TimeUnit unit); //計數-1 public void countDown();示例
public static void main(String[] args) {CountDownLatch countDownLatch = new CountDownLatch(2);new Thread(()->{try {System.out.println(Thread.currentThread().getName()+"---runing");Thread.sleep(1000);System.out.println(Thread.currentThread().getName()+"---finish");countDownLatch.countDown();} catch (InterruptedException e) {e.printStackTrace();}},"A").start();new Thread(()->{try {System.out.println(Thread.currentThread().getName()+"---runing");Thread.sleep(1000);System.out.println(Thread.currentThread().getName()+"---finish");countDownLatch.countDown();} catch (InterruptedException e) {e.printStackTrace();}},"B").start();System.out.println("主線程等待子線程執行完畢");try {countDownLatch.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("子線程執行完畢");}總結
以上是生活随笔為你收集整理的CountDownLatch(线程计数器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 儿童刷牙的方法
- 下一篇: 用鼠标右键可以打开如何使用电脑鼠标右键