如何执行特定次数的线程

时间:2014-10-21 07:00:48

标签: java multithreading

如何执行特定次数的线程。例如,我有4个线程,每个线程方法应该执行10次。这怎么可能?我被告知不要在run方法中使用循环

我使用过这样的东西。但是这里创建4个线程并执行10次。

ExecutorService executor = Executors.newFixedThreadPool(4);
for (int i = 0; i < 10; i++) {
Runnable worker = new MyThread(i);
executor.execute(worker);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
System.out.println("Finished all threads");

2 个答案:

答案 0 :(得分:3)

您可能需要先阅读Java specification

  

不止一次启动线程永远不合法。特别是,a   一旦完成执行,线程可能无法重新启动。

因此,如果你想要运行相同的Thread不止一次是毫无意义的。您应该创建Thread的新实例并在其上调用start。

答案 1 :(得分:0)

如果你想要每个运行runnable的线程10次,那么你可能只想创建4个独立的执行器并将runnable提交10次,每次执行4个执行器。

然而,这是相当愚蠢的,因为哪个线程正在执行你的runnable并不重要。他们都是一样的。我不认为这是一个很好的练习。

有些情况(非常非常罕见)您希望严格控制哪个线程运行哪个任务等,但大多数程序员从不需要关心。