成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java FutureTask類使用案例解析

瀏覽:177日期:2022-09-02 13:07:19

FutureTask一個可取消的異步計算,FutureTask 實現了Future的基本方法,提空 start cancel 操作,可以查詢計算是否已經完成,并且可以獲取計算的結果。結果只可以在計算完成之后獲取,get方法會阻塞當計算沒有完成的時候,一旦計算已經完成,那么計算就不能再次啟動或是取消。

一個FutureTask 可以用來包裝一個 Callable 或是一個runnable對象。因為FurtureTask實現了Runnable方法,所以一個 FutureTask可以提交(submit)給一個Excutor執行(excution).

FutureTask是java 5引入的一個類,從名字可以看出來FutureTask既是一個Future,又是一個Task。

我們看下FutureTask的定義:

public class FutureTask<V> implements RunnableFuture<V> { ...}public interface RunnableFuture<V> extends Runnable, Future<V> { /** * Sets this Future to the result of its computation * unless it has been cancelled. */ void run();}

FutureTask實現了RunnableFuture接口,RunnableFuture接口是Runnable和Future的綜合體。

作為一個Future,FutureTask可以執行異步計算,可以查看異步程序是否執行完畢,并且可以開始和取消程序,并取得程序最終的執行結果。

除此之外,FutureTask還提供了一個runAndReset()的方法, 該方法可以運行task并且重置Future的狀態。

Callable和Runnable的轉換我們知道Callable是有返回值的,而Runnable是沒有返回值的。Executors提供了很多有用的方法,將Runnable轉換為Callable:

public static <T> Callable<T> callable(Runnable task, T result) { if (task == null) throw new NullPointerException(); return new RunnableAdapter<T>(task, result); }

FutureTask內部包含一個Callable,并且可以接受Callable和Runnable作為構造函數:

public FutureTask(Callable<V> callable) { if (callable == null) throw new NullPointerException(); this.callable = callable; this.state = NEW; // ensure visibility of callable } public FutureTask(Runnable runnable, V result) { this.callable = Executors.callable(runnable, result); this.state = NEW; // ensure visibility of callable }

它的內部就是調用了Executors.callable(runnable, result);方法進行轉換的。

以Runnable運行

既然是一個Runnable,那么FutureTask就可以以線程的方式執行,我們來看一個例子:

@Test public void convertRunnableToCallable() throws ExecutionException, InterruptedException { FutureTask<Integer> futureTask = new FutureTask<>(new Callable<Integer>() { @Override public Integer call() throws Exception {log.info('inside callable future task ...');return 0; } }); Thread thread= new Thread(futureTask); thread.start(); log.info(futureTask.get().toString()); }

上面例子是以單個線程來執行的,同樣我們也可以將FutureTask提交給線程池來執行:

@Test public void workWithExecutorService() throws ExecutionException, InterruptedException { FutureTask<Integer> futureTask = new FutureTask<>(new Callable<Integer>() { @Override public Integer call() throws Exception {log.info('inside futureTask');return 1; } }); ExecutorService executor = Executors.newCachedThreadPool(); executor.submit(futureTask); executor.shutdown(); log.info(futureTask.get().toString()); }

本文的例子可參考https://github.com/ddean2009/learn-java-concurrency/tree/master/futureTask

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
蜜桃av噜噜一区二区三区小说| 欧美日韩不卡在线| 久久亚洲免费| 一级中文字幕一区二区| 国产精品九九| 国产精品色眯眯| 牛牛国产精品| 日本一区二区三区四区| av电影天堂一区二区在线| 日韩欧美国产电影| 国产成人午夜精品5599| 91麻豆精品久久久久蜜臀| 精品午夜久久福利影院| 日本二三区不卡| 日本美女一区二区三区| 欧美一a一片一级一片| 日本aⅴ精品一区二区三区| 久久久久综合| 青青国产91久久久久久| 国产视频一区在线播放| 欧美黄色大片网站| 国产精品国产三级国产普通话99 | 中文字幕免费不卡| 91蜜桃在线观看| 中文字幕一区二区5566日韩| 亚洲成色www久久网站| 亚洲另类色综合网站| 国产美女诱惑一区二区| 亚洲一级片在线观看| 久久亚洲国产精品一区二区| 精品一区二区三区在线播放| 日韩一区二区中文字幕| 成人动漫一区二区三区| 国产精品午夜电影| 国产精品欧美久久| 免费美女久久99| 欧美日韩国产首页| 成人白浆超碰人人人人| 久久久精品国产免大香伊| 在线精品亚洲| 水野朝阳av一区二区三区| 欧美精品1区2区| av电影在线不卡| 综合欧美亚洲日本| 鲁鲁狠狠狠7777一区二区| 美女精品自拍一二三四| 欧美一级二级三级蜜桃| 欧美成人日本| 亚洲一区二区精品视频| 精品视频色一区| 97超碰欧美中文字幕| 国产精品久久久久久久久快鸭| 正在播放亚洲| 免费在线观看一区二区三区| 欧美一区二区三区电影| 午夜免费电影一区在线观看| 亚洲精品乱码久久久久久黑人| 久久精品三级| 国产福利一区二区三区在线视频| 久久在线观看免费| 亚洲精品女人| 精品一区二区久久| 久久综合九色综合97婷婷女人 | 狠狠v欧美v日韩v亚洲ⅴ| 精品免费国产一区二区三区四区| 红杏aⅴ成人免费视频| 天天av天天翘天天综合网| 欧美一区二区三区性视频| 国内成+人亚洲| 麻豆专区一区二区三区四区五区| 久久婷婷久久一区二区三区| 亚洲一区二区三区免费在线观看 | 日韩欧美电影一二三| 欧美午夜久久| 日本欧美韩国一区三区| www一区二区| 国产女优一区| 大陆成人av片| 一区二区三区在线免费视频| 欧美日本一区二区| 国内精品久久久久久久97牛牛 | 91麻豆精品国产综合久久久久久| 欧美国产视频在线观看| 日韩二区在线观看| 精品国产髙清在线看国产毛片 | 成人综合激情网| 亚洲色图视频网| 欧美三级视频在线播放| 午夜私人影院久久久久| 欧美本精品男人aⅴ天堂| 国产亚洲一区在线| jiyouzz国产精品久久| 水野朝阳av一区二区三区| 亚洲精品一区在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 激情综合色综合久久| 国产精品日韩成人| 在线观看亚洲精品视频| 国产精品videossex久久发布| 蜜桃视频一区二区三区| 国产精品国产三级国产a| 精品视频一区三区九区| 亚洲看片网站| www.性欧美| 蜜芽一区二区三区| 亚洲欧美日韩国产手机在线| 日韩欧美久久久| 久久资源av| 亚洲欧洲精品一区二区| 成人午夜短视频| 三级欧美韩日大片在线看| 国产精品入口麻豆原神| 欧美日韩国产一区| 国产精品免费一区二区三区在线观看 | 日本亚洲免费观看| 亚洲国产岛国毛片在线| 欧美精品日韩一区| 欧美亚洲免费在线| 影音先锋日韩资源| 粉嫩蜜臀av国产精品网站| 五月天精品一区二区三区| 国产精品色一区二区三区| 欧美一区二区三区小说| 91久久免费观看| 亚洲大片av| 91丝袜呻吟高潮美腿白嫩在线观看| 蜜桃一区二区三区在线观看| 亚洲免费视频成人| 久久久久国产精品麻豆| 在线电影一区二区三区| 久久亚洲精品伦理| 亚洲人成免费| 午夜精品一区二区三区四区| 国产盗摄视频一区二区三区| 香港成人在线视频| 国产精品国产三级国产有无不卡| 日韩小视频在线观看专区| 在线观看一区二区视频| 亚洲一区二区免费看| 国模精品娜娜一二三区| 91在线观看免费视频| 国产乱国产乱300精品| 琪琪久久久久日韩精品| 亚洲一二三区在线观看| 成人免费在线播放视频| 久久久亚洲精华液精华液精华液| 欧美一区二区三区白人| 欧美日韩和欧美的一区二区| 色狠狠一区二区三区香蕉| 一本久久综合| 在线观看视频日韩| 国产一区二区中文| 欧美日韩大片一区二区三区 | 国产在线视频一区二区三区| 日本怡春院一区二区| 午夜精品福利一区二区三区蜜桃| 一区二区三区在线免费| 1000精品久久久久久久久| 国产嫩草影院久久久久| 久久你懂得1024| 亚洲精品一区二区三区四区高清 | 精品国产a毛片| 欧美刺激脚交jootjob| 3d成人动漫网站| 欧美视频完全免费看| 在线观看亚洲精品| 欧美日韩精品福利| 91麻豆精品国产91久久久使用方法| 欧美精品v日韩精品v韩国精品v| 欧美日韩精品一区二区三区蜜桃 | 每日更新成人在线视频| 亚洲欧美日韩精品在线| 国产精品美女| 久久国产主播精品| 色系网站成人免费| 欧美唯美清纯偷拍| 欧美精品日韩综合在线| 日韩天堂在线观看| 欧美精品一区二区高清在线观看| 精品国产一区二区三区忘忧草 | 午夜成人免费电影| 日本亚洲欧美天堂免费| 久久精品国产成人一区二区三区| 蜜臀91精品一区二区三区| 极品少妇一区二区三区精品视频| 国产麻豆日韩欧美久久| 成人福利电影精品一区二区在线观看| 99久久婷婷国产综合精品电影| 亚洲精品视频观看| 亚洲成va人在线观看| 久久国产精品99久久久久久老狼 | 制服丝袜中文字幕一区| 日韩亚洲欧美在线观看| 久久久不卡网国产精品一区| 中文字幕亚洲一区二区av在线| 亚洲私人影院在线观看| 亚洲国产成人av好男人在线观看| 日韩在线一二三区| 久久精品av麻豆的观看方式| 国产伦精品一区二区三区免费|