结束后连续运行java线程

时间:2013-03-20 13:56:32

标签: java multithreading

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

我尝试的代码是:

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

有关如何实现这一目标的任何反馈意见?

更新:MyThread类实际上是MyRunnable!

非常感谢, 维拉德

2 个答案:

答案 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)

使用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);
}