【发布时间】:2011-03-06 02:44:14
【问题描述】:
最近学习了CyclicBarrier,但是这里有个问题:
代码:
public class Main {
public static CyclicBarrier c;
public static void main(String[] agrs){
int threadsCount = 5;
c = new CyclicBarrier(threadsCount + 1);
// make 5 A threads to run
}
}
public class A implements Runnable {
public void run(){
// do something
Main.c.await();
// do something
}
}
关于代码,我想知道为什么我必须通过 (threadsCount + 1) 而不是 (threadsCount) 来初始化 CyclicBarrier,因为我从未在 main 方法中调用 await()?
【问题讨论】:
-
你不能。如果您运行
threadsCount线程,您的代码将无法运行,因为调用await()的线程数必须等于 与CyclicBarrier 中的参与方数!您在省略的代码中一定做错了什么。 BTW:你昨天确实问过same question,为什么被删了?
标签: java multithreading cyclicbarrier