我有一个作为线程运行的类,我希望在完成执行后再次运行,并且可能保持同一个类的两个三个线程同时运行(即,如果一个线程完成执行但是两个正在运行,只有一个再次运行,依此类推。)
我尝试的代码是:
ExecutorService pool = Executors.newFixedThreadPool( 3 );
while( true )
pool.submit( new MyThread() );
有关如何实现这一目标的任何反馈意见?
更新:MyThread类实际上是MyRunnable!
非常感谢, 维拉德
答案 0 :(得分:1)
试
final ExecutorService pool = Executors.newFixedThreadPool(3);
pool.submit(new Runnable() {
public void run() {
System.out.println("running1");
pool.submit(this);
}
});
pool.submit(new Runnable() {
public void run() {
System.out.println("running2");
pool.submit(this);
}
});
答案 1 :(得分:1)
ExecutorService executor = Executors.newFixedThreadPool(3);
CompletionService<Void> compService = new ExecutorCompletionService<Void>(executor);
for(int i = 0; i < 3; i++) compService.submit(new Task(), null);
while(true)
{
compService.take(); // wait until one of the threads finishes its task
compService.submit(new Task(), null);
}