//任务 多线程处理
package com.zto.test;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
/**
* Created by Hehy on 2016/10/9.
*/
public class TestFutureTask {
public static void main(String[] args) {
Test00 tets =new Test00();
tets.test01();
System.out.print("end");
}
}
class Test00{
public int test01(){
List<String> test = new ArrayList<String>();
for(int i= 0;i<1000;i++)
test.add("test"+i);
ExecutorService es = Executors.newFixedThreadPool(10);
List<FutureTask<String>> futureTaskList = new ArrayList<FutureTask<String>>();
for (final String testItem : test) {
FutureTask<String> futureTask = new FutureTask<String>(new Callable<String>() {
public String call() throws Exception {
System.out.println("#Task"+testItem);
return "Task"+testItem;
}
});
es.execute(futureTask);
futureTaskList.add(futureTask);
System.out.println("@Task"+testItem);
}
for (FutureTask<String> item :futureTaskList){
try { //mark get 阻塞 直至结果反馈
System.out.println("!"+item.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
es.shutdown();
return 1; }}