如何执行特定次数的线程。例如,我有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");
答案 0 :(得分:3)
您可能需要先阅读Java
specification。
不止一次启动线程永远不合法。特别是,a 一旦完成执行,线程可能无法重新启动。
因此,如果你想要运行相同的Thread
不止一次是毫无意义的。您应该创建Thread
的新实例并在其上调用start。
答案 1 :(得分:0)
如果你想要每个运行runnable的线程10次,那么你可能只想创建4个独立的执行器并将runnable提交10次,每次执行4个执行器。
然而,这是相当愚蠢的,因为哪个线程正在执行你的runnable并不重要。他们都是一样的。我不认为这是一个很好的练习。
有些情况(非常非常罕见)您希望严格控制哪个线程运行哪个任务等,但大多数程序员从不需要关心。