1. 程式人生 > >java併發程式設計常用類

java併發程式設計常用類

 在java 1.5中,提供了一些非常有用的輔助類來幫助我們進行併發程式設計,比如CountDownLatch,CyclicBarrier和Semaphore,今天我們就來學習一下這三個輔助類的用法。

  以下是本文目錄大綱:

  一.CountDownLatch用法

  二.CyclicBarrier用法

  三.Semaphore用法

  原文連結:

  http://www.cnblogs.com/dolphin0520/p/3920397.html、

一.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

相關推薦

java併發程式設計常用

 在java 1.5中,提供了一些非常有用的輔助類來幫助我們進行併發程式設計,比如CountDownLatch,CyclicBarrier和Semaphore,今天我們就來學習一下這三個輔助類的用法。   以下是本文目錄大綱:   一.CountDownL

Java併發程式設計的藝術之八----java中的併發工具

1.等待多執行緒完成的countDownLatch CountDownLatch允許一個或多個執行緒等待其他執行緒完成操作。 執行緒中,讓一個執行緒等待最簡單的做法是使用join方法,執行緒A中呼叫B.join方法,說明讓執行緒A等待執行緒B完成之後再執行。 實現原理:不停檢查執行緒是否

java併發程式設計--Executor框架以及Executors的建立執行緒池方法

       Eexecutor作為靈活且強大的非同步執行框架,其支援多種不同型別的任務執行策略,提供了一種標準的方法將任務的提交過程和執行過程解耦開發,基於生產者-消費者模式,其提交任務的執行緒相當於生產者,執行任務的執行緒相當於消費者,並用Runnab

Java併發程式設計(3)-構造執行緒安全的模式

文章目錄 一、例項限制模式 1.1、 限制變數確保執行緒安全 1.2、分析ArrayList的執行緒安全性 1.3、總結 二、委託執行緒安全模式 2.

Java併發程式設計(十一)Java中的原子操作

一、原子操作類簡介 JDK1.5開始提供了java.util.concurrent.atomic包,其中有一系列用法簡單、效能高效、可以執行緒安全更新變數的原子操作類,目前(JDK1.7)大概有這麼些: 二、原子操作類實現原理 以AtomicInteger為例看下原始碼,其中的兩個

Java併發程式設計3 —— 物件鎖和

synchronized關鍵字作用在同步程式碼塊上,給共享變數“上鎖”可以解決執行緒安全問題。這把“鎖”可以作用在某個物件上,也可以作用在某個類上。 舉個栗子,有個自助銀行,裡面有兩臺ATM機,工作人員可以看到每次存取款之後機器裡鈔票的總金額數。現在有兩個人來存錢,各存50

(2.1.27.4)Java併發程式設計:原子Atomic

在Java中的併發包中了提供了以下幾種型別的原子類來來解決執行緒安全的問題。分為 基本資料型別原子類 陣列型別原子類 引用型別原子類 欄位型別原子類。 因為其內部原理都差不多一致。這裡會對每種型別的原子類抽一個來介紹。 一、原子類的使用方式 public c

Java 併發程式設計之詳解工具 CountDownLatch

CountDownLatch是一個在java1.5被引入同步工具類,它允許一個或多個執行緒一直等待,直到其他執行緒的操作執行完後再執行。countdownlatch在Java開發中應用場景及其廣泛,同時也是面試中的高頻考點。每一個Java程式設計師都應該熟練掌握,在本篇文章中,我將會從以下幾方面對其

Java併發程式設計系列之十九:原子操作

原子操作類簡介 當更新一個變數的時候,多出現資料爭用的時候可能出現所意想不到的情況。這時的一般策略是使用synchronized解決,因為synchronized能夠保證多個執行緒不會同時更新該變數。然而,從jdk 5之後,提供了粒度更細、量級更輕,並且在多核

【搞定Java併發程式設計】第27篇:Java中的併發工具之執行緒間交換資料的 Exchanger

上一篇:Java中的併發工具類之控制併發執行緒數的 Semaphore Exchanger(交換者)是一個用於執行緒間協作的工具類。Exchanger用於進行執行緒間的資料交換。它提供一個同步點,在這個同步點,兩個執行緒可以交換彼此的資料。這兩個執行緒通過exchange方法交換資料,如果第一個

【搞定Java併發程式設計】第26篇:Java中的併發工具之控制併發執行緒數的 Semaphore

上一篇:Java中的併發工具類之同步屏障 CyclicBarrier 本文目錄: 1、獲取許可證 2、釋放許可證 本文轉載自:https://mp.weixin.qq.com/s/LS8YBKpiJnHEY1kMWmwoxg 推薦閱讀:剖析基於併發AQS的共享鎖的實現(基於訊

【搞定Java併發程式設計】第25篇:Java中的併發工具之同步屏障 CyclicBarrier

上一篇:Java中的併發工具類之CountDownLatch 本文目錄: 1、CyclicBarrier的簡單概述 2、CyclicBarrier 的原始碼分析 3、CyclicBarrier與CountDownLatch的區別 1、CyclicBarrier的簡單概述

【搞定Java併發程式設計】第24篇:Java中的併發工具之CountDownLatch

上一篇:Java中的阻塞佇列 BlockingQueue 詳解 本文目錄: 1、CountDownLatch的基本概述 2、CountDownLatch的使用案例 3、CountDownLatch的原始碼分析 1、CountDownLatch的基本概述 Count

Java併發程式設計之原子操作

原子操作類簡介 當更新一個變數的時候,多出現資料爭用的時候可能出現所意想不到的情況。這時的一般策略是使用synchronized解決,因為synchronized能夠保證多個執行緒不會同時更新該變數。然而,從jdk 5之後,提供了粒度更細、量級更輕,並且在多核處理器具有高效

java 併發程式設計的幾個工具

1.CountDownLatch(倒計時器)適用於一個主執行緒在等待其他幾個執行緒執行結果的應用場景。(比如一主多重)當CountDownLatch維護的計數器為零的時候,呼叫await方法的執行緒才會執行,否則一直阻塞2.CyclicBarrier(CyclicBarrie

Java併發程式設計札記-(三)JUC原子-07CAS

CAS,即compare and swap,比較並交換。CAS操作包含三個運算元:記憶體值(V),預期值(A)、新值(B)。如果記憶體值與預期值相同,就將記憶體值修改為新值,否則不做任何操作。 java.util.concurrent.atomic是建立在CA

Java併發程式設計札記-(三)JUC原子-05原子方式更新的指定volatile欄位

AtomicReferenceFieldUpdater、AtomicIntegerFieldUpdater和AtomicLongFieldUpdater是基於反射的實用工具,可以提供對關聯欄位型別的訪問。例如AtomicLongFieldUpdater可以對指定

Java併發程式設計(八)------無鎖與無鎖(原子操作)

1. 無鎖的概念 無鎖主要有兩個特徵: 是無障礙的 保證有一個執行緒可以勝出 與無障礙相比,無障礙並不保證有競爭時一定能完成操作,因為如果它發現每次操作都會產生衝突,那它則會不停地嘗試。如果臨界區內的執行緒互相干擾,則會導致所有的執行緒會卡死在臨界區,那麼系統性能則

Java併發程式設計-同步輔助之CountDownLatch

操作方法建構函式CountDownLatch(int count),count表示要等待的運算元的數目。await()方法,阻塞等待,需要其他執行緒完成期待的操作,直到count為0。countDown()方法,當某一個操作完成後,呼叫此方法,count數減一。CountDo

java併發程式設計實戰》:執行緒同步輔助之訊號量(semaphore)

1.訊號量的概念: 訊號量是一種計數器,用來保護一個或者多個共享資源的訪問,它是併發程式設計的一種基礎工具,大多數程式語言都提供了這個機制。 2、訊號量控制執行緒訪問流程: 如果執行緒要訪問一個共享資源,它必須先獲得訊號量。如果訊號量的內部計數器大於0,訊號量將減1,然後