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.FutureTask;
public class testMain {
/**
* @param args
*
*/
public static void main(String[] args) {
List<FutureTask<Object>> futureTasks = new ArrayList<FutureTask<Object>>();
ExecutorService executorService = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++) {
FutureTask<Object> futureTask = new FutureTask<Object>(
new Callable<Object>() {
public Object call() {
try {
int time = (int) (Math.random() * 5000);
Thread.sleep(time);
System.out.println("第:"
+ Thread.currentThread().getName()
+ ":個線程");
System.out.println("運行時間:" + time + "ms");
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
});
executorService.submit(futureTask);
futureTasks.add(futureTask);
}
executorService.shutdown();
for (int i = 0; i < futureTasks.size(); i++) {
try {
FutureTask<Object> futureTask = futureTasks.get(i);
Object object = null;
object = futureTask.get();
System.out.println("第" + (i + 1) + "個:" + object);
} catch (Exception e) {
}
}
}
}
結果:
第:pool-1-thread-3:個線程
運行時間:187ms
第:pool-1-thread-2:個線程
運行時間:2281ms
第:pool-1-thread-5:個線程
運行時間:3842ms
第:pool-1-thread-4:個線程
運行時間:3956ms
第:pool-1-thread-1:個線程
運行時間:4893ms
第1個:true
第2個:true
第3個:true
第4個:true
第5個:true