Java异步任务转同步任务的方式

1.Java的CountDownLatch

CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

主要方法

public CountDownLatch(int count);

public voidcountDown();

public voidawait() throwsInterruptedException

构造方法参数指定了计数的次数

countDown方法,当前线程调用此方法,则计数减一

await方法,调用此方法会一直阻塞当前线程,直到计时器的值为0

2.Thread.join

Thead.join方法同样可以使当前线程阻塞,直到另一个线程执行完毕。

用法:

public class A(){

 doSomeThing;

B.join();

doSomeThing After B finish;

}

在Thread A中调用Thread B的join方法。A线程阻塞,B线程执行,B线程执行完毕后,A线程继续执行


另外Java还有一个和CountDownLatch类很相似的同步辅助类CyclicBarrier。它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。使用场景是需要所有的子任务都完成时,才执行主任务。这篇博客中有例子:http://blog.csdn.net/shihuacai/article/details/8856407

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,515评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,007评论 1 18
  • layout: posttitle: 《Java并发编程的艺术》笔记categories: Javaexcerpt...
    xiaogmail阅读 5,899评论 1 19
  • ▲马士提夫犬躺在土里奄奄一息,幸亏及时送医得救。 4月23日,加拿大魁北克省蒙泰雷吉一名民众在路边走的时候,突然听...
    宠物帝国阅读 235评论 0 0