我在for循环中创建了几个线程,如下所示:
for (int i = 0; i<5; i++) {
new Thread() {
//do stuff
}
}
但我需要确保这些线程一个接一个地执行,而不是同时执行。
这样做的最佳方式是什么?
答案 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)