我需要在某个检查点同步一些线程,只有所有线程都到达这个点后,它们才应该继续。有什么简单的构造方法吗?
for (int v = 0; v < 10; v++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
doFirst();
//checkpoint
doSecond();
} catch (Throwable e) {
e.printStackTrace();
}
}
}).start();
}
最佳答案
import java.util.concurrent.CountDownLatch;
private CountDownLatch countDownLatch = new CountDownLatch(10)
...
public void run() {
doFirst();
countDownLatch.countDown();
countDownLatch.await();
doSecond();
}
---- 或(少 1 行代码)----
import java.util.concurrent.CyclicBarrier;
private CyclicBarrier cyclicBarrier= new CyclicBarrier(10)
...
public void run() {
doFirst();
cyclicBarrier.await();
doSecond();
}
关于Java - 在特定点上同步线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022054/