1. 程式人生 > >CountDownLatch\ CyclicBarrier\ Semaphore

CountDownLatch\ CyclicBarrier\ Semaphore

一.CountDownLatch用法

二.CyclicBarrier用法

三.Semaphore用法

一.CountDownLatch用法

CountDownLatch類位於java.util.concurrent包下,利用它可以實現類似計數器的功能。比如有一個任務A,它要等待其他4個任務執行完畢之後才能執行,此時就可以利用CountDownLatch來實現這種功能了。

CountDownLatch類只提供了一個構造器:

1 public
CountDownLatch( int count) {  };  //引數count為計數值

然後下面這3個方法是CountDownLatch類中最重要的方法:

1 2 3 public void await() throws InterruptedException { };   //呼叫await()方法的執行緒會被掛起,它會等待直到count值為0才繼續執行 public boolean await( long
timeout, TimeUnit unit) throws InterruptedException { };  //和await()類似,只不過等待一定的時間後count值還沒變為0的話就會繼續執行 public void countDown() { };  //將count值減1

下面看一個例子大家就清楚CountDownLatch的用法了:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 public class Test {       public static void main(String[] args) {             final CountDownLatch latch = new CountDownLatch( 2 );             new Thread(){               public void run() {                   try {                       System.out.println( "子執行緒" +Thread.currentThread().getName()+ "正在執行" );                      Thread.sleep( 3000 );                      System.out.println( "子執行緒" +Thread.currentThread().getName()+ "執行完畢" );                      latch.countDown();                  } catch (InterruptedException e) {                      e.printStackTrace();                  }               };           }.start();             new Thread(){               public void run() {                   try {                       System.out.println( "子執行緒" +Thread.currentThread().getName()+ "正在執行" );                       Thread.sleep( 3000 );                       System.out.println( "子執行緒" +Thread.currentThread().getName()+ "執行完畢" );                       latch.countDown();

相關推薦

Join,CountDownLatch,CyclicBarrier,Semaphore和Exchanger

信號量 並發編程 多線程 CountDownLatch允許一個或者多個線程等待其他線程完成操作,之後再對結果做統一處理; 適用場景,分布式系統中對多個微服務的調用,並發執行並且必須等待全部執行完成才能繼續執行後續操作; 其實在java中默認的實現是join

CountDownLatch\ CyclicBarrier\ Semaphore

一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 一.CountDownLatch用法 CountDownLatch類位於java.util.concurrent包下,利用它可以實現類似計數器的功能。比如有一個任務A,它要等待其他4個任務執

java併發包-CountDownLatch CyclicBarrier Semaphore 案例

1.CountDownLatch案例         --呼叫.await()阻塞等待         --呼叫countDown()方法每次遞減1,直到為0,啟動所有等待的執行緒 package com.r

高併發第十單:J.U.C AQS 元件:CountDownLatch. CyclicBarrier .Semaphore

AQS全名:AbstractQueuedSynchronizer,是併發容器J.U.C(java.lang.concurrent)下locks包內的一個類。它實現了一個FIFO(FirstIn、FisrtOut先進先出)的佇列。底層實現的資料結構是一個雙向列表。 Sync queue:同步佇列,是一個雙

併發包下常見的同步工具類詳解(CountDownLatch,CyclicBarrier,Semaphore)

目錄 1. 前言 在實際開發中,碰上CPU密集且執行時間非常耗時的任務,通常我們會選擇將該任務進行分割,以多執行緒方式同時執行若干個子任務,等這些子任務都執行完後再將所得的結果進行合併。這正是著名的map-reduce思想,不過map-reduce通常被用在分散式計算的語境下,這裡舉這個例子只是為了說明對多

java併發包concurrent之Atomic,CountDownLatch,CyclicBarrier,Semaphore

常用的併發包 Atomic 常用的併發類CountDownLatch,CyclicBarrier,Semaphore Atomic:分析下面程式碼 常規的demo public class Test002 { public static void main(S

CountDownLatch,CyclicBarrier,Semaphore

//CountDownLatch public static void countDownLatchTest(){ CountDownLatch countDownLatch = new CountDownLatch(

CountDownLatch.CyclicBarrierSemaphore

一  CountDownLatch 1.使用場景(與join方法類似)    1:某一執行緒在開始執行前等待n個執行緒執行完畢。    2:實現多個執行緒開始執行任務的最大並行性。強調的是多個執行緒在某一時刻同時開始執行。類似於賽跑,將多

[滄海拾遺]java併發之CountDownLatchSemaphoreCyclicBarrier

JAVA併發包中有三個類用於同步一批執行緒的行為,分別是CountDownLatch、Semaphore和CyclicBarrier。 CountDownLatch CountDownLatch是一個計數器閉鎖,主要的功能就是通過await()方法來阻塞住當前執行緒,

25.大白話說java並發工具類-CountDownLatchCyclicBarrier,Semaphore,Exchanger

java rac second service join方法 -o -s exc tor 1. 倒計時器CountDownLatch 在多線程協作完成業務功能時,有時候需要等待其他多個線程完成任務之後,主線程才能繼續往下執行業務功能,在這種的業務場景下,通常可以使用Thre

CountDownLatch CyclicBarrierSemaphore

get system exce 信號 就是 通過 等待 工廠 release CountDownLatch CyclicBarrier和 Semaphore 原理 基於AQS實現。 讓需要的暫時阻塞的線程,進入一個死循環裏面,得到某個條件後再退出循環,以此實現阻塞當前線程

java執行緒併發工具類CyclicBarrierCountDownLatchSemaphore

一、CyclicBarrier   (原文連結:http://www.studyshare.cn/blog-front/blog/index ) 1、定義 CyclicBarrier是執行緒併發工具類之一,俗稱柵欄。當一組執行緒全部執行完後,到達柵欄屏障,就放開屏障,繼續往後

java線程並發工具類CyclicBarrierCountDownLatchSemaphore

www. 集合 工作 所有 分析 兩個 調用 支持 下一步 一、CyclicBarrier (原文鏈接:http://www.studyshare.cn/blog-front/blog/index ) 1、定義 CyclicBarrier是線程並發工具類之一,俗稱柵

併發程式設計(5)——AQS之CountDownLatchSemaphoreCyclicBarrier

CountDownLatch A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. 通常情況下,

Java並發(6)- CountDownLatchSemaphore與AQS

退出 很好 不同的 釋放 pri bcd EDA 大型 pro 引言 上一篇文章中詳細分析了基於AQS的ReentrantLock原理,ReentrantLock通過AQS中的state變量0和1之間的轉換代表了獨占鎖。那麽可以思考一下,當state變量大於1時代表了什麽?

Java多執行緒19:多執行緒下的其他元件之CountDownLatchSemaphore、Exchanger

前言       在多執行緒環境下,JDK給開發者提供了許多的元件供使用者使用(主要在java.util.concurrent下),使得使用者不需要再去關心在具體場景下要如何寫出同時兼顧執行緒安全性與高效率的程式碼。之前講過的執行緒池、BlockingQueue都是

Java多執行緒等待所有執行緒結束(CountDownLatch/CyclicBarrier)

本文主要是參考官方文件做一學習用途。 官方連結: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html http://docs.oracle.com/javase/1.5.0/docs/a

CountDownLatch CyclicBarrier 原理 總結

CountDownLatch原理 CountDownLatch是使用一組執行緒來等待其它執行緒執行完成,這個場景類似於一群人考試,先做的人先交了,但是在考試時間沒到的前提下,老師必須額等待最後一個學生完成交卷老師才能走,CountDownLatch使用Sy

最常用的CountDownLatch, CyclicBarrier你知道多少? (Java工程師必會)

CountdownLatch,CyclicBarrier是非常常用併發工具類,可以說是Java工程師必會技能了。不但在專案實戰中經常涉及,而且在編寫壓測程式,多執行緒demo也是必不可少,所以掌握它們的用法和實現原理非常有必要。 念念不忘,必有迴響! 點贊走一走,找到女朋友~ 等待多執行緒完成的Count