黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java異步調用方法

Java異步調用方法

更新時間:2022-06-27 10:44:26 來源:動力節(jié)點 瀏覽2257次

在本文中,動力節(jié)點小白將告訴大家如何在 Java 中異步調用函數(shù)。

首先,我們將了解一些 Java 內置的異步編程工具,例如 FutureTask 和 CompletableFuture。然后我們將了解一些提供開箱即用解決方案的庫,例如 EA Async 和 Cactoos。

用于Thread在 Java 中異步調用方法

我們可以開始一個新線程來執(zhí)行任何異步操作。它更容易理解。

讓我們創(chuàng)建一個添加兩個整數(shù)并打印結果的新線程:

class example {
    public static void main(String[] args) {
        int num1 = 4;
        int num2 = 5;
        int result=num1+num2;
        Thread T = new Thread(() -> {
            System.out.println("Addition of " + num1 + " and " + num2 + " is " + result);});
        T.start();
    }
}

在 Java 中異步調用方法用于FutureTask

Future 接口允許您使用FutureTask. 我們可以使用 的 submit 方法ExecutorService來異步運行項目并返回一個FutureTask對象。

例如,這里是如何找到一個數(shù)字的階乘:

int num1 = 9;
ExecutorService tp = Executors.newCachedThreadPool();
Future<double> futureTask = tp.submit(() -> factorial(num1));
while (!futureTask.isDone()) {
    System.out.println("Still processing the task");
}
double result = futureTask.get();
tp.shutdown();

我們已經利用 Future 接口的isDone功能來查看工作是否已經完成。之后,我們使用get方法來獲取結果。

在 Java 中異步調用方法用于CompletableFuture

作為 和 的混合體Future,在 Java 8CompletionStage中CompletableFuture引入。它具有異步編程技術,例如supplyAsync、runAsync和thenApplyAsync。

ACompletionStage是一個承諾。它保證計算將在某個時候完成。

這CompletionStage很有用,因為它提供了幾種方法來附加要在階段完成時執(zhí)行的回調。

讓我們從頭開始,做一個簡單的異步計算。

在 Java 中使用supplyAsyncWithCompletableFuture異步調用方法

CompletableFuture.supplyAsync(this::sendMsg);

就這么簡單,該supplyAsync函數(shù)接受一個包含異步代碼的供應商。我們希望sendMsg在這個例子中使用這個函數(shù)。

在 Java 中使用thenAcceptWithCompletableFuture異步調用方法

CompletableFuture.supplyAsync(this::sendMsg).thenAccept(this::notify);

在第一個示例中,我們執(zhí)行sendMsg異步發(fā)送消息。所以讓我們添加一個回調來提醒我們消息的傳遞狀態(tài)。

可以通過多種方式引入回調;一種方法是使用thenAccept. 在此示例中,它需要通知用戶一旦完成就處理先前計算的結果。

用于EA Async在 Java 中異步調用方法

這是 Java 的另一個特性,它允許您逐步編寫異步代碼,從而使編程和擴展變得更加容易。Electronic Arts 是 async-await 功能的創(chuàng)建者,該功能可通過 ea-async 包在 Java 環(huán)境中使用。

此功能轉換運行時代碼并重寫 await 方法調用,與completeableFuture.

所以我們可以使用EA-sync被稱為await方法的方法來實現(xiàn)上面的completeableFuture代碼,通過調用Async.init函數(shù)來初始化Async運行時。

在這里,我們將使用 EAAsync類提供的 await 函數(shù)來修改前面描述的CompletableFuture代碼:

static {Async.init();}

為了設置Async運行時分析,我們使用Async.init靜態(tài)函數(shù)。

public double example2 (int num1) {
    CompletableFuture<double> cf = CompletableFuture.supplyAsync(() -> factorial(num1));
    double result = Async.await(cf);
}

在運行時,該async函數(shù)會更改代碼并重寫await方法調用以類似地操作,使用CompletableFuture.

使用 Cactoos 庫異步調用 Java 中的方法

對于異步任務,這個庫提供了一個Async類。Cactoos 庫具有廣泛的曲目,從文本操作到數(shù)據(jù)結構。

該庫的原始類型和功能與其他庫(如 Guava 和 Apache Commons)提供的類似,盡管它們更側重于面向對象的設計概念。

在這里,使用 CactoosAsync類的一個實例,我們將找到一個數(shù)字的階乘。

Async<Integer, Double> a = new Async<Integer, Double>(inputdata -> factorial(inputdata));
Future<Double> asyncFuture = a.apply(num1);
Double result = asyncFuture.get();

該apply函數(shù)使用該ExecutorService.submit方法執(zhí)行并返回一個 Future 接口對象。Cactoos 庫提供的類執(zhí)行與 Apache Commons 庫中的靜態(tài)方法相同的功能。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 青青草国产青春综合久久 | 98精品国产高清在线看入口 | 在线国产一区 | 成年人免费视频观看 | 一本大道香蕉大vr在线吗视频 | 黄色网页在线免费观看 | 男人av的天堂 | vod国产成人精品视频 | 久久9999国产精品免费 | 夜天干天干啦天干天天爽 | a级毛片黄色 | 中文字幕在线观 | 成人免费网址在线 | 免费看男女做黄的软件 | 日韩伦乱| 爽爽影院在线免费观看 | 免费亚洲黄色 | 欧美日韩在线观看区一二 | 黄色免费网站在线播放 | 久久精品国产亚洲a不卡 | 日韩精品免费 | 波多野结衣在线观看一区 | 日本天堂免费观看 | 农村寡妇一级毛片免费播放 | 欧美xxxxx18 | 久久久免费网站 | 国产免费一区二区三区在线观看 | 最近的中文字幕免费视频1 最近的中文字幕大全免费版 | 麻豆成人在线视频 | 成人免费毛片网站 | 成人国产精品久久久免费 | 草草视频免费观看 | 成人综合在线观看 | 亚洲第一网站免费视频 | 国产美女一级ba大片免色 | 无遮挡无删动漫肉在线观看 | 久久99精品久久久久久青青91 | 国产精品亚洲午夜一区二区三区 | 国产精品欧美久久久久天天影视 | 国产啪视频免费视频观看视频 | 国产精品久久免费观看 |