我有5个线程在无限循环中运行。我需要在所有5个线程每次结束后获取最终值。我怎么能这样做?
while(true){
new Class1(1,10).start();
new Class1(11,20).start();
new Class1(21,30).start();
new Class1(31,40).start();
new Class1(41,50).start();
}
我需要确定这5个线程的结束并选择在所有线程中更新的一个特定值。我怎么能这样做?
答案 0 :(得分:3)
这里的代码将在循环中每次启动5个新线程并不断循环。你绝对确定那是你想要的吗?
只需使用CountDownLatch
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html
将锁存器初始化为5.每个线程在退出时对锁存器进行一次计数。
主线程等待锁存器命中0然后执行其处理并退出。
不要循环创建线程!
答案 1 :(得分:0)
while(true){
List<Class1> x = Arrays.asList( new Class1(1,10), new Class1(11,20), new Class1(21,30), new Class1(31,40), Class1(41,50));
for (Class1 t: x) {
x.start();
}
for (Class1 t: x) {
x.join();
}
}