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

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

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

瀏覽:174日期: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久久,三上悠亚国产精品一区二区三区
国产欧美亚洲精品a| 日韩欧美一区二区三区免费看| 日韩欧美精品综合| 国产成人精品999在线观看| 老牛国内精品亚洲成av人片| 国产黄色精品| 精品伊人久久| 国产激情综合| 亚洲影院天堂中文av色| 中文字幕乱码亚洲无线精品一区| 日韩在线视频精品| 中国女人久久久| 首页国产精品| 日韩精品欧美精品| 亚洲麻豆一区| 日本a级不卡| 亚洲开心激情| 91精品国产一区二区在线观看| 鲁大师成人一区二区三区| 国产精品高潮呻吟久久久久| 日本国产亚洲| 欧美另类中文字幕 | 国产精品宾馆| 亚洲欧美日韩国产综合精品二区 | 欧美片网站免费| 日本在线不卡视频一二三区| 在线日韩成人| 国产欧美午夜| 97精品一区二区| 国产精品天堂蜜av在线播放| 欧美成人一二区| 欧美日韩a区| 黄色成人91| 999在线观看精品免费不卡网站| 蜜桃视频在线观看一区二区| 日本不良网站在线观看| 成人免费一区| 日本不卡一二三区黄网| 99成人在线视频| 久久久久久自在自线| 国产成人免费| 亚洲精品无播放器在线播放| 午夜一级久久| 日韩一区精品| 日本欧洲一区二区| 日韩精品国产欧美| 国产精品毛片aⅴ一区二区三区| 鲁大师影院一区二区三区| 国产麻豆一区二区三区精品视频| 国产精品91一区二区三区| 午夜久久中文| 成人在线网站| 免费国产亚洲视频| 国产精品丝袜在线播放| 成人午夜国产| 色8久久久久| 成人在线丰满少妇av| re久久精品视频| 国产精品欧美一区二区三区不卡| 伊人久久av| 亚洲精品大片| 国产极品模特精品一二| 国产在线成人| 国产日韩在线观看视频| 欧美日韩尤物久久| 欧美在线看片| 欧美另类综合| 精品三级国产| 亚洲日韩中文字幕一区| 成人免费电影网址| 国产乱人伦精品一区| 日韩一区二区免费看| 麻豆91精品91久久久的内涵| 水蜜桃久久夜色精品一区的特点| 麻豆视频久久| 热久久国产精品| 日韩a一区二区| 日韩区欧美区| 黄色亚洲精品| 亚洲最新无码中文字幕久久 | 成人亚洲一区二区| 日本免费新一区视频| 欧美成人久久| 国产一区二区三区亚洲| 日韩制服丝袜av| 视频小说一区二区| 国产精品毛片视频| 日韩精品成人在线观看| 99精品小视频| 91亚洲国产成人久久精品| 日韩在线成人| 亚洲作爱视频| 99热国内精品| 国产亚洲一区二区手机在线观看 | 国产一区二区三区免费在线| 欧美有码在线| 亚洲精品伦理| 久久xxxx精品视频| 天堂日韩电影| 日韩欧美精品综合| 国产精品xx| 麻豆一区二区在线| 国产麻豆精品久久| 欧美在线黄色| 日韩欧美在线精品| 在线精品观看| 夜夜精品视频| 激情综合网五月| 久久久久久黄| 日韩亚洲一区在线| 嫩草伊人久久精品少妇av杨幂| 日本成人在线视频网站| 免费人成精品欧美精品| 久久精品不卡| 一区二区三区四区在线看| 国产精品专区免费| 日韩国产一区二区| 亚洲啊v在线| 另类中文字幕国产精品| 日韩免费av| 成人羞羞在线观看网站| 香蕉视频亚洲一级| 99久久亚洲精品蜜臀| 久久在线免费| 欧美亚洲国产精品久久| 成人小电影网站| 欧美不卡高清一区二区三区| 樱桃视频成人在线观看| 午夜久久中文| 欧美91精品| 视频在线观看一区二区三区| 亚洲人成亚洲精品| 午夜欧美理论片| 亚洲视频二区| 日韩国产一区二| 国产探花一区| 麻豆成人在线观看| 麻豆理论在线观看| 日本高清不卡一区二区三区视频| 久久精品动漫| 中文一区在线| 日本aⅴ亚洲精品中文乱码| 国产精品欧美一区二区三区不卡| 美女精品久久| 日韩精品dvd| 免费欧美一区| 亚洲天堂av资源在线观看| 欧美专区一区| 亚洲综合电影| 中文在线不卡| 日韩不卡在线观看日韩不卡视频 | 在线国产一区二区| 免费黄网站欧美| 国产精品色婷婷在线观看| а√天堂中文在线资源8| 欧美va天堂| 麻豆精品91| 欧美在线看片| 秋霞影视一区二区三区| 亚洲色图网站| 蜜桃久久久久| 91精品亚洲| 亚洲精品影视| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 久草免费在线视频| 亚洲精品极品少妇16p| 亚洲三级网站| 国产精品成久久久久| 欧美日韩国产欧| 国产欧美日本| 91精品精品| 日韩一区二区三区免费视频| 久久字幕精品一区| 米奇777超碰欧美日韩亚洲| 自拍自偷一区二区三区| 国产日产一区| 欧美日韩精品一区二区视频| 日韩一区网站| 丝袜av一区| 欧美伊人久久| 欧美日韩一区二区综合| 亚洲欧洲免费| 日本精品不卡| 日韩avvvv在线播放| 蜜桃av.网站在线观看| 亚州精品视频| 欧美三级网址| 日韩欧美久久| 成人久久一区| 国产欧美一级| 久久一区二区三区电影| 国产亚洲电影| 亚洲成人日韩| 国产精品v亚洲精品v日韩精品| 午夜国产一区二区| 久久av日韩| 中文精品电影| 91精品韩国| 国产欧美日韩一区二区三区四区| 蜜桃成人av|