Java中CountDownLatch使用学习
来源:互联网 发布:中国网瘾少年数据 编辑:程序博客网 时间:2024/06/06 13:08
最近在很多地方看到使用CountDownLatch,但是我还不知道这个东东是干啥的,通过查看api文档,了解这个类的使用,这里就记录学习下。
A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.
这个是API里面解释
CountDownLatch主要是控制多线程里面某一个线程需要等待其他线程都运行完了才执行的。
这上面说了它主要是控制多个线程里面的其他线程都运行完毕之后才能运行,那么肯定就有一个可以设置在最后一个线程要运行之前的所有进程啦。。
public CountDownLatch(int count)
CountDownLatch这个类中已经提供构造方法给我们设置了
接下来还有两个方法看一下,就可以写个小例子来看看CountDownLatch是怎么用的啦。。
public void countDown(),此方法是当一个线程运行完之后,调用他,对应的count值会-1。
public void await(),这个方法是用在最后一个线程要运行之前,只有当count值为0时,最后一个线程就会运行。
下面来看下一个小例子
package test;import java.util.concurrent.CountDownLatch;public class ThreadTest { CountDownLatch countDownLatch = new CountDownLatch(2); class WorkerTheard1 extends Thread{ @Override public void run() { super.run(); System.out.print("线程1开始工作啦\n"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print("线程1结束工作啦\n"); countDownLatch.countDown(); } } class WorkerThread2 extends Thread{ @Override public void run() { super.run(); try { System.out.println("线程2开始工作啦\n"); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程2结束工作啦\n"); countDownLatch.countDown(); } } class WorkerThread3 extends Thread{ @Override public void run() { super.run(); try { countDownLatch.await(); System.out.println("线程3开始工作啦\n"); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程3结束工作啦\n"); } } public static void main(String[] args) throws Exception { ThreadTest threadTest = new ThreadTest(); threadTest.new WorkerTheard1().start(); threadTest.new WorkerThread2().start(); threadTest.new WorkerThread3().start(); }}
运行之后的结果
线程1开始工作啦
线程2开始工作啦
线程2结束工作啦
线程1结束工作啦
线程3开始工作啦
线程3结束工作啦
这里可以看到线程3是等到线程1,和线程2都执行完毕,才执行的。
0 0
- Java中CountDownLatch使用学习
- Java中CountDownLatch的使用
- Java中使用CountDownLatch进行多线程同步
- java并发学习----CountDownLatch
- Java之CountDownLatch使用
- java CountDownLatch使用
- java CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- Java之CountDownLatch使用
- CountDownLatch的使用 Java
- java8 注解学习笔记
- 【模板篇】树状数组们(二)
- java URLConnection类
- 为 iOS 建立 Travis CI
- 深度学习小结及相关链接
- Java中CountDownLatch使用学习
- 【Python】实现网站常见漏洞扫描+备份扫描+源码分析
- HTML/JS 调用android方法,开发 Android。
- java解决跨域访问。
- hibernate.hbm.xml详解
- 实现ZF-Net
- 自定义UIPageControl
- Android绘图篇-01 Canvas和Paint的基础使用
- java生成和解析二维码实战——QRCode