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