Callable+FutureTask實現多線程並獲取結果

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

發佈了28 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章