多线程-按顺序放(按顺序取执行结果)

当前有100个有序的任务,要求利用10个线程处理这些任务,并在完成所有任务后保证原有顺序返回;

代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class TestDemo{

public static void main(String[] args) throws Exception {
new TestDemo().js();
}

public void js() throws Exception{
//创建线程池,并分配10个线程来处理任务
ExecutorService service=Executors.newFixedThreadPool(10);
List> futureList=new ArrayList<>();
//创建100个任务
for (int i = 0; i <100; i++) {
CallableTask task=new CallableTask(i);
futureList.add(service.submit(task));//按顺序放
}
for (int j = 0; j < futureList.size(); j++) {

System.out.println("按顺序取结果:"

+futureList.get(j).get());

}
System. out.println( "计算结束了!") ;
service.shutdown() ;
}

private class CallableTask implements Callable{
Integer temp ;
public CallableTask(Integer d){
temp=d ;
}
@Override
public String call() throws Exception {
System. out.println( "执行第"+ temp+ "个任务") ;
return "第"+ temp+ "个任务:"+Thread. currentThread().getName() ;
}
}
}


输出(部分截图)

多线程-按顺序放(按顺序取执行结果)_第1张图片

参考:https://blog.csdn.net/xuxile/article/details/77672759

你可能感兴趣的:(多线程-按顺序放(按顺序取执行结果))