Java中多线程同步类 CountDownLatch
在多线程开发中,常常遇到希望一组线程完成之后在执行之后的操作,java提供了一个多线程同步辅助类,可以完成此类需求:
类中常见的方法:
其中构造方法:
CountDownLatch(int count) 参数count是计数器,一般用要执行线程的数量来赋值。
long getCount():获得当前计数器的值。
void countDown():当计数器的值大于零时,调用方法,计数器的数值减少1,当计数器等数零时,释放所有的线程。
void await():调所该方法阻塞当前主线程,直到计数器减少为零。
代码例子:
线程类:
import java.util.concurrent.CountDownLatch; public class TestThread extends Thread{ CountDownLatch cd; String threadName; public TestThread(CountDownLatch cd,String threadName){ this.cd=cd; this.threadName=threadName; } @Override public void run() { System.out.println(threadName+" start working..."); dowork(); System.out.println(threadName+" end working and exit..."); cd.countDown();//告诉同步类完成一个线程操作完成 } private void dowork(){ try { Thread.sleep(2000); System.out.println(threadName+" is working..."); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
测试类:
import java.util.concurrent.CountDownLatch; public class TsetCountDownLatch { public static void main(String[] args) { try { CountDownLatch cd = new CountDownLatch(3);// 表示一共有三个线程 TestThread thread1 = new TestThread(cd, "thread1"); TestThread thread2 = new TestThread(cd, "thread2"); TestThread thread3 = new TestThread(cd, "thread3"); thread1.start(); thread2.start(); thread3.start(); cd.await();//等待所有线程完成 System.out.println("All Thread finishd"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
输出结果:
thread1 start working... thread2 start working... thread3 start working... thread2 is working... thread2 end working and exit... thread1 is working... thread3 is working... thread3 end working and exit... thread1 end working and exit... All Thread finishd
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
- java多线程CountDownLatch与线程池ThreadPoolExecutor/ExecutorService案例
- Java countDownLatch如何实现多线程任务阻塞等待
- 如何使用CountDownLatch同步java多线程
- java使用CountDownLatch等待多线程全部执行完成
- JAVA多线程CountDownLatch使用详解
- Java中CountDownLatch进行多线程同步详解及实例代码
- 详解Java多线程编程中CountDownLatch阻塞线程的方法
- Java多线程编程之CountDownLatch同步工具使用实例
- Java多线程之同步工具类CountDownLatch
相关文章
SpringBoot FailureAnalyzer实例使用教程
FailureAnalyzer是一种在启动时拦截exception并将其转换为human-readable消息的好方法,包含在故障分析中。SpringBoot为application context相关的exceptions,JSR-303验证等提供了这样的分析器,实际上很容易创建自己的2022-12-12Java concurrency之公平锁(二)_动力节点Java学院整理
这篇文章主要为大家详细介绍了Java concurrency之公平锁的第二篇内容,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06Java中的InputStreamReader和OutputStreamWriter源码分析_动力节点Java学院整理
本文通过示例代码给大家解析了Java中的InputStreamReader和OutputStreamWriter知识,需要的的朋友参考下吧2017-05-05jsp、struts、spring、mybatis实现前端页面功能模块化拆分的方案
这篇文章主要介绍了 jsp、struts、spring、mybatis实现前端页面功能模块化拆分的方案,非常不错,需要的朋友参考下2017-01-01
最新评论