1

我有一个作为线程运行的类,我想在它完成执行后再次运行,并且可能保持同一类的两三个线程同时运行(即,如果一个线程完成执行但两个正在运行,只有一个再次运行,依此类推)。

我试过的代码是这样的:

ExecutorService pool = Executors.newFixedThreadPool( 3 );
while( true )
    pool.submit( new MyThread() );

关于如何实现这一点的任何反馈?

更新:MyThread 类实际上是 MyRunnable!

非常感谢,弗拉德

4

2 回答 2

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);
        }
    });
于 2013-03-20T14:09:33.300 回答
1

使用ExecutorCompletionService

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);
}
于 2013-03-20T14:13:58.017 回答