package cn;import java.util.concurrent.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;/**
* * Java線程:有傳回值的線程
* @author wb_qiuquan.ying
*/
@SuppressWarnings("unchecked")
public class Test {
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws ExecutionException,
InterruptedException {
int sizeNum = 5;
// 建立一個線程池
ExecutorService pool =
Executors.newFixedThreadPool(sizeNum);
// 建立多個有傳回值的任務
List<Future> list = new ArrayList<Future>();
for (int i = 0; i < sizeNum; i++) {
// Callable c = new MyCallable(i + " ");也可以這樣寫,運行結果一樣
MyCallable c = new MyCallable(i + " ");
// 執行任務並擷取Future對象
Future f = pool.submit(c);
System.out.println("線程運行中此線程的值是:" + f.get().toString());
list.add(f);
}
// 關閉線程池 pool.shutdown();
// 擷取所有並發任務的運行結果
System.out.println("");
for (Future f : list) {
// 從Future對象上擷取任務的傳回值,並輸出到控制台
System.out.println("關閉線程池後,各個線程的值:"+ f.get().toString());
}