如何启动和管理Java线程?

时间:2011-06-20 18:19:18

标签: java multithreading

下面的代码很好用,但我想知道..从概念上讲,它是否正确?启动线程,等待它们join。是否应该使用ThreadPool

如果可能,请发表评论

List<Thread> threads = new ArrayList<Thread>();

for (Test test : testsToBeExecuted) {
  Thread t = new Thread(test);
  threads.add(t);
  t.start();
}

for (Thread thread : threads) {
  thread.join();
}

2 个答案:

答案 0 :(得分:9)

概念上它看起来很好。您可以使用您创建的ExecutorService:

ExecutorService service = Executors.newFixedThreadPool(testsToBeExecuted.size());

Thenyou会在执行程序服务本身上创建一个Callables列表并调用invokeAll。这本质上也会做同样的事情。

答案 1 :(得分:0)

同意ExecutorService是最佳选择。我有一个实用程序类,它使用ExecutorService来运行任意数量的任务,收集结果并将它们作为列表返回。 ExecutorService将为您完成所有的内务管理。