从无限循环中获取值

时间:2014-02-14 12:21:37

标签: java multithreading infinite-loop

我有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个线程的结束并选择在所有线程中更新的一个特定值。我怎么能这样做?

2 个答案:

答案 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();
  }
}