一次执行一个线程

时间:2015-05-05 18:23:18

标签: java multithreading concurrency executorservice java.util.concurrent

我在for循环中创建了几个线程,如下所示:

for (int i = 0; i<5; i++) {
   new Thread() {
       //do stuff
   }
}

但我需要确保这些线程一个接一个地执行,而不是同时执行。

这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:8)

使用池大小为1的ExecutorService来顺序执行作业(简洁明了的解决方案)。

如果您需要一个简单的例子:

    Executor executor = Executors.newFixedThreadPool(1);
    for(int i=0;i<100;i++){
        final int idx=i;
        executor.execute(new Runnable(){
            public void run(){
               System.out.println("I'm thread #"+idx); 
            }
        });
    }

这将按顺序执行100 Runnable,每个将打印其索引。

有关详细信息,请参阅official documentation

答案 1 :(得分:1)

for (int i = 0; i<5; i++) {
   Thread a = new Thread() {
       //do stuff
   };
a.start();
a.join();
}

答案 2 :(得分:0)