CountDownLatch
来源:互联网 发布:数据交换 安全 编辑:程序博客网 时间:2024/06/02 01:50
JavaSE 5的java.util.concurrent引入了大量设计用来解决并发问题的新类,学习使用它们有助于编写出更加简而健壮的编码。
1、CountDownLatch
被用来同步多个任务,强制等待由其它任务执行完成后再执行。
示例:
JobA.java
package thread;import java.util.concurrent.CountDownLatch;public class JobA extends Thread {private CountDownLatch cdl;public JobA(CountDownLatch cdl) {this.cdl = cdl;}public void run() {System.out.println("Job A doing something.");try {Thread.sleep(10000);} catch (Exception e) {e.printStackTrace();}System.out.println("Job A done.");cdl.countDown();}}JobB.java
package thread;import java.util.concurrent.CountDownLatch;public class JobB extends Thread {private CountDownLatch cdl;public JobB(CountDownLatch cdl) {this.cdl = cdl;}public void run() {System.out.println("Job B doing something.");try {Thread.sleep(20000);} catch (Exception e) {e.printStackTrace();}System.out.println("Job B done.");cdl.countDown();}}JobC.java
package thread;import java.util.concurrent.CountDownLatch;public class JobC extends Thread {private CountDownLatch cdl;public JobC(CountDownLatch cdl) {this.cdl = cdl;}public void run() {System.out.println("Job C waiting.");try {cdl.await();} catch (Exception e) {e.printStackTrace();}System.out.println("Job C done.");}}ThreadTest.java
package thread;import java.util.concurrent.CountDownLatch;public class ThreadTest {public static void main(String[] args) {CountDownLatch cdl = new CountDownLatch(2);JobA jobA = new JobA(cdl);JobB jobB = new JobB(cdl);JobC jobC = new JobC(cdl);jobA.start();jobB.start();jobC.start();}}
输出如下:
Job B doing something.Job A doing something.Job C waiting.Job A done.Job B done.Job C done.
0 0
- CountDownLatch
- CountDownLatch
- CountDownLatch
- Countdownlatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch,
- CountDownLatch
- C语言基础 printf输出字符串%s
- learning to hash
- Unity3D 视频教程列表,共 91 套!
- 从厦大退学,孤身一人来到北京创业整整一年
- DBCP
- CountDownLatch
- C语言基础 计算字符串的长度
- Retrofit2使用(非常简洁易懂)
- HTML5 canvas画布(四)
- 安装PHP 及配置
- APP开发实战64-Activity数据传递机制
- spring redis集成
- 欢迎使用CSDN-markdown编辑器
- ReactJS学习系列课程(React Redux使用)