JDO*_*dle 1 java concurrency multithreading executorservice java.util.concurrent
我在for循环中创建了几个线程,如下所示:
for (int i = 0; i<5; i++) {
new Thread() {
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但我需要确保这些线程一个接一个地执行,而不是同时执行.
做这个的最好方式是什么?
使用ExecutorService池大小为1的顺序执行作业(简洁明了的解决方案).
如果你需要一个简单的例子:
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
这将按顺序执行100 Runnable,每个将打印其索引.
有关详细信息,请参阅官方文档.