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

2017-03-26  本文已影响829人  Answer_yzpppp

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

上一篇下一篇

猜你喜欢

热点阅读