<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Chan Chen Coding...

    Runnable Callable Future and Executor in Java

    Refer to: http://blog.csdn.net/zhangzhaokun/article/details/6615454

    Executor就是Runnable和Callable的調度容器,Future就是對于具體的調度任務的執行結果進行查看,最為關鍵的是Future可以檢查對應的任務是否已經完成,也可以阻塞在get方法上一直等待任務返回結果。Runnable和Callable的差別就是Runnable是沒有結果可以返回的,就算是通過Future也看不到任務調度的結果的。 

    package com.future.demo;

    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;

    public class RunnableAndCallable2Future {
        public static void main(String[] args) {

            // 創建一個執行任務的服務
            ExecutorService executor = Executors.newFixedThreadPool(3);
            try {
                // 1.Runnable通過Future返回結果為空
                
    // 創建一個Runnable,來調度,等待任務執行完畢,取得返回結果
                Future<?> runnable1 = executor.submit(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("runnable1 running.");
                    }
                });
                System.out.println("Runnable1:" + runnable1.get());

                // 2.Callable通過Future能返回結果
                
    // 提交并執行任務,任務啟動時返回了一個 Future對象,
                
    // 如果想得到任務執行的結果或者是異??蓪@個Future對象進行操作
                Future<String> future1 = executor.submit(new Callable<String>() {
                    @Override
                    public String call() throws Exception {
                        // TODO Auto-generated method stub
                        return "result=task1";
                    }
                });
                // 獲得任務的結果,如果調用get方法,當前線程會等待任務執行完畢后才往下執行
                System.out.println("task1: " + future1.get());

                // 3. 對Callable調用cancel可以對對該任務進行中斷
                
    // 提交并執行任務,任務啟動時返回了一個 Future對象,
                
    // 如果想得到任務執行的結果或者是異??蓪@個Future對象進行操作
                Future<String> future2 = executor.submit(new Callable<String>() {
                    @Override
                    public String call() throws Exception {
                        try {
                            while (true) {
                                System.out.println("task2 running.");
                                Thread.sleep(50);
                            }
                        } catch (InterruptedException e) {
                            System.out.println("Interrupted task2.");
                        }
                        return "task2=false";
                    }
                });

                // 等待5秒后,再停止第二個任務。因為第二個任務進行的是無限循環
                Thread.sleep(10);
                System.out.println("task2 cancel: " + future2.cancel(true));

                // 4.用Callable時拋出異常則Future什么也取不到了
                
    // 獲取第三個任務的輸出,因為執行第三個任務會引起異常
                
    // 所以下面的語句將引起異常的拋出
                Future<String> future3 = executor.submit(new Callable<String>() {

                    @Override
                    public String call() throws Exception {
                        throw new Exception("task3 throw exception!");
                    }

                });
                System.out.println("task3: " + future3.get());
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            // 停止任務執行服務
            executor.shutdownNow();
        }

    }


    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2012-11-26 11:59 Chan Chen 閱讀(362) 評論(0)  編輯  收藏 所屬分類: Scala / Java

    主站蜘蛛池模板: 黄色片在线免费观看 | 曰皮全部过程视频免费国产30分钟 | 久久电影网午夜鲁丝片免费| 97亚洲熟妇自偷自拍另类图片| 免费日本一区二区| 久久精品国产亚洲AV麻豆王友容| 91精品成人免费国产| 亚洲码国产精品高潮在线| 色www永久免费| 亚洲综合久久综合激情久久| 69精品免费视频| 亚洲国产午夜精品理论片| 成人免费网站在线观看| 国产精品无码亚洲精品2021| 亚洲日本一区二区一本一道| 爽爽爽爽爽爽爽成人免费观看| 亚洲AV无码乱码国产麻豆| 黄色免费网站网址| 亚洲乱色伦图片区小说| 亚洲国产黄在线观看| 四虎影视无码永久免费| 亚洲高清免费在线观看| 在线观看免费毛片| 永久免费精品影视网站| 久久精品国产亚洲av成人| 亚洲三级高清免费| 疯狂做受xxxx高潮视频免费| 亚洲人成影院在线无码按摩店| 1000部无遮挡拍拍拍免费视频观看| 国产精品高清视亚洲一区二区| 亚洲国产精品成人久久蜜臀| 国产免费无码AV片在线观看不卡 | 国产精品亚洲av色欲三区| 红杏亚洲影院一区二区三区| 麻豆最新国产剧情AV原创免费| 亚洲av无码一区二区三区天堂| 久久激情亚洲精品无码?V| 中文字幕在线免费观看| 国产精品亚洲小说专区| 亚洲国产精品久久久久婷婷软件 | 亚洲国产综合专区在线电影|