摘要:介紹類位于包下,利用它可以實現類似計數器的功能。是通過一個計數器來實現的,計數器的初始值為線程的數量。當計數器值到達時,它表示所有的線程已經完成了任務,然后在閉鎖上等待的線程就可以恢復執行任務。
CountDownLatch 介紹
CountDownLatch 類位于java.util.concurrent包下,利用它可以實現類似計數器的功能。比如有一個任務A,它要等待其他幾個任務執行完畢之后才能執行,此時就可以利用CountDownLatch來實現這種功能了。CountDownLatch是通過一個計數器來實現的,計數器的初始值為線程的數量。每當一個線程完成了自己的任務后,計數器的值就會減1。當計數器值到達0時,它表示所有的線程已經完成了任務,然后在閉鎖上等待的線程就可以恢復執行任務。
定義兩個線程線程1
public class Thread1 extends Thread { private CountDownLatch countDownLatch; public Thread1(CountDownLatch countDownLatch) { this.countDownLatch = countDownLatch; } @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("thread-1"); countDownLatch.countDown(); } }
線程2
public class Thread2 extends Thread { private CountDownLatch countDownLatch; public Thread2(CountDownLatch countDownLatch) { this.countDownLatch = countDownLatch; } @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("thread-2"); countDownLatch.countDown(); } }請求
@RequestMapping("test-countdownlatch") public void testCountDownLatch() { CountDownLatch countDownLatch = new CountDownLatch(2); Thread1 thread1 = new Thread1(countDownLatch); Thread2 thread2 = new Thread2(countDownLatch); thread1.start(); thread2.start(); try { countDownLatch.await(); System.out.println("main..."); } catch (InterruptedException e) { e.printStackTrace(); } }結果
"main..."總是等待兩個線程完成后打印
CountDownLatch代碼
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74711.html
摘要:多線程同步工具箱之篇前言的多線程協調工具,,,都是在多線程代碼中使用比較多的工具類之一。毫不夸張的說,這幾個類,是等同于解決多線程問的包,實在有必要添加到程序員的工具箱里面。 Java多線程同步工具箱之CountDownLatch篇 前言 Java的多線程協調工具CountDownLatch,Semaphore,CyclicBarrier,ReadWriteLock都是在多線程代碼中使...
摘要:今天我們來聊一聊的使用場景。使用場景在某些業務情況下,要求我們等某個條件或者任務完成后才可以繼續處理后續任務。同時在線程完成時也會觸發一定事件。方便業務繼續向下執行。第個毒販如果當前已經沒有可以毒販,立刻返回被干掉了干掉一個。 作者 : 畢來生微信: 878799579 前言 ? 在 java.util.concurrent 包中提供了多種并發容器類來改進同步容器 的性能。今天...
摘要:所有示例代碼請見下載于基本概念并發同時擁有兩個或者多個線程,如果程序在單核處理器上運行多個線程將交替地換入或者換出內存這些線程是同時存在的,每個線程都處于執行過程中的某個狀態,如果運行在多核處理器上此時,程序中的每個線程都 所有示例代碼,請見/下載于 https://github.com/Wasabi1234... showImg(https://upload-images.jians...
摘要:線程可以調用的方法進入阻塞,當計數值降到時,所有之前調用阻塞的線程都會釋放。注意的初始計數值一旦降到,無法重置。 showImg(https://segmentfault.com/img/remote/1460000016012041); 本文首發于一世流云的專欄:https://segmentfault.com/blog... 一、CountDownLatch簡介 CountDow...
摘要:前言之前學多線程的時候沒有學習線程的同步工具類輔助類。而其它線程完成自己的操作后,調用使計數器減。信號量控制一組線程同時執行。 前言 之前學多線程的時候沒有學習線程的同步工具類(輔助類)。ps:當時覺得暫時用不上,認為是挺高深的知識點就沒去管了.. 在前幾天,朋友發了一篇比較好的Semaphore文章過來,然后在瀏覽博客的時候又發現面試還會考,那還是挺重要的知識點。于是花了點時間去了解...
閱讀 1982·2019-08-30 15:54
閱讀 3532·2019-08-30 15:52
閱讀 1822·2019-08-29 17:20
閱讀 2514·2019-08-29 17:08
閱讀 2346·2019-08-26 13:24
閱讀 780·2019-08-26 11:59
閱讀 2780·2019-08-23 14:50
閱讀 611·2019-08-23 14:20