日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Java多線程之FutureTask的介紹及使用

瀏覽:178日期:2022-08-11 10:42:06
目錄一、FutureTask的理解二、FutureTask類圖三、FutureTask類中常用方法四、FutureTask類的使用示例一、FutureTask的理解

FutureTask屬于java.util.concurrent 包;FutureTask表示可取消的異步計算。FutureTask類提供了一個Future的基本實現 ,具有啟動和取消計算的方法,查詢計算是否完整,并檢索計算結果。結果只能在計算完成后才能檢索; 如果計算尚未完成,則get方法將阻止。 一旦計算完成,則無法重新啟動或取消計算(除非使用runAndReset()調用計算 )。

二、FutureTask類圖

Java多線程之FutureTask的介紹及使用

從上面的FutureTask類圖中可以看出,FutureTask實現了RunnableFuture接口,RunnableFuture接口繼承了Runnable接口和Future接口,所以FutureTask兼備Runnable和Future兩種特性

Java多線程之FutureTask的介紹及使用Java多線程之FutureTask的介紹及使用

三、FutureTask類中常用方法

Java多線程之FutureTask的介紹及使用

1、構造方法

public FutureTask(Callable callable) 創建一個 FutureTask ,它將在運行時執行給定的 Callable 。 參數: callable表示可調用任務 。 public FutureTask(Runnable runnable,V result) 創建一個 FutureTask ,將在運行時執行給定的 Runnable ,并安排 get將在成功完成后返回給定的結果。 參數:runnable 表示可運行的任務 ;result 表示成功完成后返回的結果。

2、常用的方法

public boolean isCancelled() 如果此任務在正常完成之前取消,則返回 true 。 public boolean isDone() 返回true如果任務已完成。 public V get() 等待計算完成,然后檢索其結果。 public V get(long timeout, TimeUnit unit)如果需要等待最多在給定的時間計算完成,然后檢索其結果(如果可用)。 public boolean cancel(boolean mayInterruptIfRunning)嘗試取消執行此任務。 protected void set(V v)將此未來的結果設置為給定值,除非此未來已被設置或已被取消。四、FutureTask類的使用示例

示例參考此博文:Java FutureTask類使用

案例場景通過示例進行多任務計算,通過get()方法可以異步獲取執行結果。

1、創建一個計算任務類,實現Callable接口,重寫call方法

package com.xz.thread.FutureTask;import java.util.concurrent.Callable;/** * @description: 創建一個計算任務類,實現Callable接口,重寫call方法 * @author: xz * @create: 2021-06-02 22:06 */public class ComputeTask implements Callable<Integer> { private String taskName;//任務名稱 //任務構造器 public ComputeTask(String taskName) {this.taskName = taskName;System.out.println('創建【計算任務】開始,計算任務名稱:' + taskName); } //計算任務的方法 @Override public Integer call() throws Exception {Integer result = 0;for (int i = 1; i <=50; i++) { result = +i;}System.out.println('【計算任務】'+taskName +'執行完成。');return result; }}

2、創建一個測試類

package com.xz.thread.FutureTask;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.FutureTask;/** * @description: * @author: xz * @create: 2021-06-01 22:44 */public class Demo { public static void main(String[] args) {//任務集合List<FutureTask<Integer>> futureTasks = new ArrayList<>();//創建固定長度的線程池ExecutorService pool = Executors.newFixedThreadPool(5);for (int i = 1; i <= 10; i++) { //實例化FutureTask,傳入計算任務類 FutureTask<Integer> futureTask = new FutureTask<>(new ComputeTask(i + '')); //添加到任務集合中 futureTasks.add(futureTask); //提交任務到線程池 pool.submit(futureTask);}System.out.println('所有【計算任務】提交完畢,主線程開始執行');System.out.println('【主線程任務】開始============');//主線程睡眠5秒,模擬主線程做某些任務try { Thread.sleep(5000); System.out.println('【主線程任務】開始執行某些任務============');} catch (InterruptedException e) { e.printStackTrace();}System.out.println('【主線程任務】結束============');//用于打印任務執行結果Integer result = 0;for (FutureTask<Integer> task : futureTasks) { try {//FutureTask的get()方法會自動阻塞,知道得到任務執行結果為止result += task.get(); } catch (InterruptedException e) {e.printStackTrace(); } catch (ExecutionException e) {e.printStackTrace(); }}//關閉線程池pool.shutdown();System.out.println('多線程多任務執行結果:' + result); }}

3、輸出結果如下:

創建【計算任務】開始,計算任務名稱:1創建【計算任務】開始,計算任務名稱:2創建【計算任務】開始,計算任務名稱:3創建【計算任務】開始,計算任務名稱:4創建【計算任務】開始,計算任務名稱:5創建【計算任務】開始,計算任務名稱:6創建【計算任務】開始,計算任務名稱:7創建【計算任務】開始,計算任務名稱:8創建【計算任務】開始,計算任務名稱:9創建【計算任務】開始,計算任務名稱:10所有【計算任務】提交完畢,主線程開始執行【主線程任務】開始============【計算任務】1執行完成。【計算任務】2執行完成。【計算任務】6執行完成。【計算任務】7執行完成。【計算任務】9執行完成。【計算任務】10執行完成。【計算任務】8執行完成。【計算任務】4執行完成。【計算任務】3執行完成。【計算任務】5執行完成。【主線程任務】開始執行某些任務============【主線程任務】結束============多線程多任務執行結果:500

Java多線程之FutureTask的介紹及使用

4、結論

通過FutureTask類的get()方法可用于異步獲取執行結果,無論FutureTask調用多少次run()或者call()方法,它都能確保只執行一次Runable或Callable任務。

到此這篇關于Java多線程之FutureTask的介紹及使用的文章就介紹到這了,更多相關Java FutureTask內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲手机在线| 亚洲毛片一区| 久久久91麻豆精品国产一区| 久久久久免费| 亚洲精品a级片| 日韩高清在线不卡| 在线亚洲观看| 精品少妇av| 日本亚洲三级在线| 日韩va亚洲va欧美va久久| 国产日韩欧美一区| 亚洲三级毛片| 亚洲精品va| 不卡在线一区二区| 久久久久中文| 亚洲成人精品| 青青久久av| 在线精品亚洲欧美日韩国产| 美女国产精品久久久| 国产激情欧美| 正在播放日韩精品| 天堂中文av在线资源库 | 妖精视频成人观看www| 国产高清一区二区| 欧美 日韩 国产精品免费观看| 欧美激情麻豆| 中文字幕在线高清| 丰满少妇一区| 亚洲va在线| 日韩中文字幕麻豆| 美女精品在线观看| 免费在线欧美视频| 亚洲精品第一| 动漫av一区| 久久精品亚洲| 精品国产欧美| 久久99高清| 国产一区不卡| 激情综合网站| 日韩精品视频中文字幕| 国产精品免费大片| 欧美一级鲁丝片| 美女精品在线| 国产成人在线中文字幕| 午夜国产欧美理论在线播放 | 日本午夜精品久久久| 青青国产91久久久久久| 欧美亚洲网站| 99免费精品| 国产精品极品在线观看| 一区二区高清| 国产一区二区三区亚洲| 亚洲一区日本| 高清日韩欧美| 欧美日韩亚洲一区| 欧美性感美女一区二区 | 红桃视频亚洲| 九九99久久精品在免费线bt| 日韩中文字幕亚洲一区二区va在线 | 国产精选在线| 日韩精品一区二区三区免费视频 | 影视先锋久久| 国产精品亚洲二区| 蜜臀国产一区二区三区在线播放| 日韩不卡免费高清视频| 日韩av一区二区在线影视| 麻豆一区二区三| 99国产精品| se01亚洲视频| 麻豆91精品91久久久的内涵| 美女久久一区| 国产一区二区三区久久久久久久久| 日韩高清欧美激情| 免费成人在线视频观看| 国产精品毛片一区二区三区| 亚洲福利专区| 日韩在线短视频| 欧美91在线| 老牛影视精品| 日本精品影院| 伊人久久婷婷| 综合色就爱涩涩涩综合婷婷| 日本色综合中文字幕| 日本精品一区二区三区在线观看视频| 亚洲精品va| 四虎在线精品| 国产在线看片免费视频在线观看| 色在线中文字幕| 99久久婷婷这里只有精品| 91高清一区| 中文字幕一区二区三区四区久久| 日韩成人精品一区二区三区| 麻豆国产91在线播放| 久久久男人天堂| 国产亚洲欧洲| 国产日韩1区| 国产高清不卡| 蜜臀精品一区二区三区在线观看| 国产精品高潮呻吟久久久久| 国产精品调教| 成人污污视频| 亚洲在线网站| 精品视频高潮| 亚洲免费毛片| 亚洲不卡av不卡一区二区| 亚洲精品国产日韩| 欧美日韩一区二区高清| 色偷偷偷在线视频播放 | 伊人久久成人| 97人人精品| 国产亚洲激情| 精品一区二区三区亚洲| 亚洲激情偷拍| 亚洲精品动态| 一区在线免费观看| 97精品国产| 欧美一区91| 欧美1级日本1级| 麻豆成人av在线| 久久亚洲国产精品一区二区| 久久久久久自在自线| 免费在线成人| 综合日韩在线| 亚洲国产福利| 久久精品国产成人一区二区三区| 丝袜美腿诱惑一区二区三区| 国产九九精品| 亚洲精品婷婷| 欧美日韩一区二区综合| 卡一卡二国产精品| 91国内精品| 一级欧美视频| 黄页网站一区| 日韩午夜黄色| 妖精视频成人观看www| 久久久精品日韩| 欧美久久精品一级c片| 欧美日本二区| 高清一区二区三区av| 日产精品一区二区| 久久激情网站| 日韩精品欧美激情一区二区| 精品视频网站| 精品视频久久| 秋霞影院一区二区三区| 五月天久久网站| 国产精品毛片在线| 日韩中文字幕麻豆| 国产日韩三级| 国产精品成人自拍| 首页国产精品| 中文字幕亚洲精品乱码| 日韩中文字幕1| 亚洲综合福利| 欧美精品观看| 成人亚洲一区| 狠狠爱www人成狠狠爱综合网| 伊人久久亚洲| 日本在线成人| 国产精品羞羞答答在线观看| 福利欧美精品在线| 亚洲精品国产日韩| 久久久久黄色| 黄色亚洲精品| 久久免费影院| 欧美成人亚洲| 日韩精品亚洲aⅴ在线影院| 国产一区二区三区成人欧美日韩在线观看 | 蜜桃视频第一区免费观看| 久久人人99| 久久亚洲色图| 精品久久福利| 亚洲欧美在线综合| 亚洲一区欧美| 日韩在线免费| 免费视频一区二区三区在线观看| 久久一级电影| 麻豆91小视频| 综合国产在线| 久久亚洲成人| 韩国精品主播一区二区在线观看| 日韩国产91| 丝袜美腿亚洲色图| 丁香六月综合| 久久久久观看| 天堂av一区| 天堂成人免费av电影一区| 欧美日韩一区二区综合| 精品视频自拍| 国产精品亚洲产品| 综合激情网...| 亚洲天堂免费| 欧美日韩视频一区二区三区| 日韩毛片视频| 99精品视频在线| 久久国产毛片| 国产一区二区三区自拍| 超碰成人av| 91精品国产自产在线观看永久∴| 老牛影视精品|