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

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

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

    碼農往事
    我的代碼為什么這么丑?一定是因為我長的不好看
    posts - 29,comments - 86,trackbacks - 0
    并發模式中,有一個稱做Future模式。啥是Future模式捏? future,翻譯成中文就是“未來,將來”的意思,可以簡單地理解為 “明天的事明天再做” 。
    比方說,你在做晚飯,而只有一個火爐,先燉個豬蹄要1小時,在等待豬蹄的這個時間里,你可以去淘米、洗菜、刷牙、摳腳,待豬蹄燉好了,再繼續炒菜。
    在編碼中體現為:將耗時任務丟入單獨的線程,從而使主線程能夠繼續執行其它的邏輯,待耗時任務執行完成后再做相應的處理。
    Future模式是一鐘十分常用的并發模式,所以JDK的并發包中自帶一套實現。上類圖:



    這個自己畫的,既然畫了不能白畫,囧!!!

    下面這個是用 IntelliJ IDEA 自帶工具生成的,真心太酸爽。


    只看函數名稱,也能基本了解FutureTask所提供的主要能力:
    1、可判斷執行狀態(isDone())
    2、可取消(cancel())
    3、可讀取返回結果(get())
    4、可判斷是否取消(isCancelled)
    現在,我們可以解決上面這個豬腳的問題了:

        public static class TestTask implements Callable<Boolean> {
            @Override
            public Boolean call() throws Exception {
                //模擬時間消耗
                System.out.println("--------漫長的一小時--------");
                Thread.sleep(10000);
                System.out.println("--------豬腳燉完--------");
                return true;
            }
        }

        public static void main(String[] args) throws ExecutionException, InterruptedException {

            System.out.println("--------開始做晚飯--------");
            System.out.println("開始燉豬腳~~~");
            System.out.println("--------豬腳下鍋--------");
            FutureTask<Boolean> futureTask = new FutureTask<Boolean>(new TestTask());
            Thread thread = new Thread(futureTask);
            thread.start();
            Thread.sleep(1000);
            System.out.println("--------淘米--------");
            Thread.sleep(1000);
            System.out.println("--------洗菜--------");
            Thread.sleep(1000);
            System.out.println("--------刷牙--------");
            Thread.sleep(1000);
            System.out.println("--------摳腳--------");
            //如果豬腳燉好了
            if(futureTask.get()==true){
                System.out.println("--------繼續炒菜--------");
            }
        }
    執行結果:
    --------開始做晚飯--------
    開始燉豬腳~~~
    --------豬腳下鍋--------
    --------漫長的一小時--------
    --------淘米--------
    --------洗菜--------
    --------刷牙--------
    --------摳腳--------
    --------豬腳燉完--------
    --------繼續炒菜--------
    posted on 2014-10-23 16:13 Jimi 閱讀(5268) 評論(3)  編輯  收藏

    FeedBack:
    # re: java并發學習—— FutrueTask的使用示例
    2014-10-23 23:15 | 王鐸開
    LZ請原諒我的無知,這不就是按順序執行嗎?  回復  更多評論
      
    # re: java并發學習—— FutrueTask的使用示例
    2014-10-24 00:05 | Jimi
    @王鐸開
    你看看豬腳下鍋到出鍋,你已經淘完米、洗完菜、刷完牙、摳完腳了  回復  更多評論
      
    # re: java并發學習與實踐—— FutrueTask的使用示例
    2014-11-17 16:52 | 閔涼宇
    不是吧,后面幾個邏輯和燉豬腳是同時執行的吧。。@王鐸開
      回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 看一级毛片免费观看视频| 日本大片在线看黄a∨免费| 日韩欧美亚洲国产精品字幕久久久| 亚洲欧洲自拍拍偷午夜色无码| 在线观看人成视频免费| 91高清免费国产自产| 中文字幕免费在线视频| 真正全免费视频a毛片| 亚洲熟妇无码一区二区三区导航 | 国产AV无码专区亚洲AV蜜芽| 亚洲小视频在线观看| 久久精品国产精品亚洲艾草网美妙| 暖暖在线日本免费中文| 精品福利一区二区三区免费视频| 男女一边桶一边摸一边脱视频免费| 色窝窝亚洲AV网在线观看| 亚洲av产在线精品亚洲第一站 | 最新国产乱人伦偷精品免费网站| 免费a级毛片高清视频不卡| 中文字幕免费不卡二区| 特级无码毛片免费视频| 免费a级毛片永久免费| 毛片免费全部播放一级| 最近免费最新高清中文字幕韩国 | 国产亚洲av人片在线观看| 免费看国产精品麻豆| 国产又大又黑又粗免费视频 | 亚洲人成网国产最新在线| 亚洲精品韩国美女在线| 亚洲第一精品在线视频| 亚洲成av人影院| 亚洲无删减国产精品一区| 亚洲国产精品久久久久久| 久久噜噜噜久久亚洲va久| 久久精品国产亚洲网站| 国产V亚洲V天堂无码| 日本亚洲成高清一区二区三区| 国产亚洲一区二区手机在线观看| 亚洲处破女AV日韩精品| 国产AV无码专区亚洲精品| 久久亚洲精品无码|