国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java 并發工具類-CountDownLatch

2019-11-06 06:49:18
字體:
來源:轉載
供稿:網友

1.線程同步工具之CountDownLatch

CountDownLatch主要接口分析

CountDownLatch工作原理相對簡單,可以簡單看成一個倒計數器,在構造方法中指定初始值,每次調用countDown()方法時將計數器減1,而await()會等待計數器變為0。CountDownLatch關鍵接口如下

countDown() 如果當前計數器的值大于1,則將其減1;若當前值為1,則將其置為0并喚醒所有通過await等待的線程;若當前值為0,則什么也不做直接返回。await() 等待計數器的值為0,若計數器的值為0則該方法返回;若等待期間該線程被中斷,則拋出InterruptedException并清除該線程的中斷狀態。await(long timeout, TimeUnit unit) 在指定的時間內等待計數器的值為0,若在指定時間內計數器的值變為0,則該方法返回true;若指定時間內計數器的值仍未變為0,則返回false;若指定時間內計數器的值變為0之前當前線程被中斷,則拋出InterruptedException并清除該線程的中斷狀態。getCount() 讀取當前計數器的值,一般用于調試或者測試。

構造方法參數指定了計數的次數

countDown方法,當前線程調用此方法,則計數減一

awaint方法,調用此方法會一直阻塞當前線程,直到計時器的值為0

-------------------------code----------------------------------------

import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo {final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static void main(String[] args) throws InterruptedException {CountDownLatch latch = new CountDownLatch(2);// 兩個工人的協作Worker worker1 = new Worker("張三", 1000, latch);Worker worker2 = new Worker("李四", 8000, latch);worker1.start();//worker2.start();//latch.await();// 等待所有工人完成工作System.out.PRintln("全部工作完成--> " + sdf.format(new Date()));System.out.println("計數器:"+latch.getCount());}static class Worker extends Thread {String workerName;int workTime;CountDownLatch latch;public Worker(String workerName, int workTime, CountDownLatch latch) {this.workerName = workerName;this.workTime = workTime;this.latch = latch;}public void run() {doWork();// 工作時間System.out.println(workerName + "--> 工作時間:" + sdf.format(new Date()));System.out.println("計數器:"+latch.getCount());latch.countDown();// 工人完成工作,計數器減一}private void doWork() {try {Thread.sleep(workTime);} catch (InterruptedException e) {e.printStackTrace();}}}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安化县| 永吉县| 冷水江市| 绥芬河市| 抚远县| 淳化县| 梓潼县| 鄱阳县| 永登县| 玛沁县| 丰原市| 乌苏市| 隆德县| 武鸣县| 濉溪县| 周口市| 卫辉市| 湘西| 永泰县| 丽江市| 连云港市| 临泽县| 佛山市| 墨竹工卡县| 临邑县| 高唐县| 鹰潭市| 灵石县| 台州市| 呼伦贝尔市| 安徽省| 青铜峡市| 思茅市| 巴彦淖尔市| 哈巴河县| 岑溪市| 新密市| 洪湖市| 永康市| 恭城| 甘孜县|