//任务 多线程处理
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 ; }}