CountDownLatch用法实践

项目中写多线程时,需要判断所有线程是否执行完毕,所以想到了添加累加器来判断。这个累加器使用什么变量,找到了以下2种方式。

1. 类似AtomicInteger这种提供原子操作的类型
AtomicInteger count = new AtomicInteger(0);
count.getAndIncrement();

2.CountDownLatch
CountDownLatch主要有两个方法:countDown()和await()。
countDown():用于使计数器减一,其一般是执行任务的线程调用
         await():方法则使调用该方法的线程处于等待状态,其一般是主线程调用

原文地址:https://www.cnblogs.com/atai/p/11011658.html

时间: 2024-10-03 01:18:26

CountDownLatch用法实践的相关文章

CountDownLatch用法---等待多个线程执行完才执行

CountDownLatch用法---等待多个线程执行完才执行 一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了. CountDownLatch类只提供了一个构造器: 1 public CountDownLatch(int count) {  };  //参数count为计数值

CountDownLatch 用法

概述 CountDownLatch是java.util.concurrent包中一个类, 构造方法 CountDownLatch(int count): 定义计数器   count 为线程的数量 , 主要方法  计数器减一 public void countDown() { sync.releaseShared(1); } 等待其他运行结束 public void await() throws InterruptedException { sync.acquireSharedInterrupti

浅析Java中CountDownLatch用法

/** CountDownLatch类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行 CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件.利用这种特性,可以让主线程等待子线程的结束.下面以一个模拟运动员比赛的例子加以说明. */ import java.util.concurrent.CountDownLatch; import jav

同步辅助类CountDownLatch用法

CountDownLatch是一个同步辅助类,犹如倒计时计数器,创建对象时通过构造方法设置初始值,调用CountDownLatch对象的await()方法则使当前线程处于等待状态,调用countDown()方法就将计数器减1,当计数到达0时,则所有等待线程全部开始执行.它提供的常用方法: public CountDownLatch(int count); //构造方法参数指定了计数的次数 public void countDown(); //当前线程调用此方法,则计数减一 public void

java 多线程 CountDownLatch用法

ountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法参数指定了计数的次数 countDown方法,当前线程调用此方法,则计数减一 awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0 例子

Linux find命令的用法实践

一.find命令简介 Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格

TableCellRenderer用法实践(一)

转载:http://blog.csdn.net/chosen0ne/article/details/4453267 Swing组件根据其所操作的数据类型分为两种,一种是标量数据类型的组件,一类是复合数据类型的组件.标量数据类型的组件操作的是基本类型的数据,如字符串.布尔.数字等,此类型组件包括JTextField.JCheckBox.JLabel.JButton等.复合数据类型的组件操作的是诸如向量.矩阵和非线形等类型的数据.向量数据类型的组件有JComboBox.JList,矩阵数据类型的组件

countdownlatch用法

public void await() throws InterruptedException { };   //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };  //和await()类似,只不过等待一定的时间后count值还没变为0的话就会继续执行 public void countDown() {

PHP命令空间namespace及use的用法实践总结

看PHP中的命名空间和use namespace app\admin\model; use think\Model; use think\Db; 综上可以看出,命名空间就是相当于一个文件夹的路径. 同一个命名空间下,不能有相同的类文件. 同名的类文件可以存在于不同的命名空间下面. 用了命名空间,可以方便的调用其他文件夹下的文件. 只需要通过using.import.use引入命名空间下的文件即可. 从5.3开始你可以使用命名空间来组织你的代码了. 不同的命名空间内可以包含相同名字的类.函数以及常