博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java多线程之CountDownLatch类基本用法
阅读量:7299 次
发布时间:2019-06-30

本文共 1567 字,大约阅读时间需要 5 分钟。

hot3.png

java.util.concurrent.CountDownLatch类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行。

1.构造方法参数指定了计数的次数
2.countDown方法,当前线程调用此方法,则计数减一
3.awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0

package cn.baokx;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;class SubThread implements Runnable{	private CountDownLatch downLatch;	private String name;		public SubThread(CountDownLatch downLatch,String name){		this.downLatch = downLatch;		this.name = name;	}	@Override	public void run() {		System.out.println(this.name+" is working...");		try {			TimeUnit.SECONDS.sleep(new Random().nextInt(10));			System.out.println(this.name + " has finished its working...");		} catch (InterruptedException e) {			e.printStackTrace();		}finally{			this.downLatch.countDown();		}	}}public class CountDownLatchTest {	public static void main(String[] args) {		CountDownLatch downLatch = new CountDownLatch(4);		SubThread st1 = new SubThread(downLatch,"subThread1");		SubThread st2 = new SubThread(downLatch,"subThread2");		SubThread st3 = new SubThread(downLatch,"subThread3");		SubThread st4 = new SubThread(downLatch,"subThread4");				System.out.println("MainThread is wating...");		new Thread(st1).start();		new Thread(st2).start();		new Thread(st3).start();		new Thread(st4).start();		try {			downLatch.await();		} catch (InterruptedException e) {			e.printStackTrace();		}		System.out.println("All subThread has finished,MainThread can begin to checking...");	}}

转载于:https://my.oschina.net/u/1427708/blog/710646

你可能感兴趣的文章
ASP.NET MVC学习系列(一)-WebAPI初探
查看>>
Gson简要使用笔记
查看>>
windows批量创建用户
查看>>
category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
查看>>
"org.jboss.netty.internal.LoggerConfigurator".DESCRIBED is already registered 的解决办法
查看>>
字符串交替打印 操作方法
查看>>
Ubuntu 用vsftpd 配置FTP服务器
查看>>
java中的io系统详解(转)
查看>>
iOS开发- UICollectionView详解+实例
查看>>
android 从零单排 第一期 按键显示helloworld
查看>>
Get buck-boost performance from a boost regulator
查看>>
串行通信------字符串发送和十六进制发送
查看>>
Linux_Command
查看>>
安全DNS
查看>>
Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
查看>>
android开发 java与c# 兼容AES加密
查看>>
VMware Fusion DHCP方式下如何指定虚拟机IP地址
查看>>
【XSS】延长 XSS 生命期
查看>>
Java知多少(4)J2SE、J2EE、J2ME的区别
查看>>
HDR 拍照模式的原理,实现及应用
查看>>