我有一个程序,可以在其中初始化并启动可变数量的线程。我需要主程序与线程交互,因此我将它们放入无限循环中。在所有线程都死掉之后,我想要一种方法来打破循环。这是我的部分代码:
public static void main(String[] args) {
//some random initializing
for(int i = 1; i <= num; i++){ //p1 is a Runnable
Thread t = new Thread(p1, "t"+ Integer.toString(i));
t.start();
}
while(true){
//do some stuff while threads are active
//not sure what if statement to put here to break loop
}
如果需要,我可以发布更多代码,但我认为这在很大程度上是无关紧要的。
最佳答案
您可以使用CountDownLatch
(自 java 1.5 起)这里,tt 是一种同步辅助工具,它允许一个或多个线程等待,直到其他线程中执行的一组操作完成。
片段:
CountDownLatch signal = new CountDownLatch(num);
...
for(int i = 1; i <= num; i++){ //p1 is a Runnable
Thread t = new Thread(p1, "t"+ Integer.toString(i),signal);
t.start();
}
signal.await(); // wait for all to finish
...在线程的 run()
方法中...
public void run(){
... // do stuff
signal.countDown(); // sending signal that work has done.
}
关于java - 当没有更多线程处于 Activity 状态时如何跳出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20392822/