国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 如何快速實(shí)現(xiàn)異步調(diào)用方法

這篇具有很好參考價(jià)值的文章主要介紹了java 如何快速實(shí)現(xiàn)異步調(diào)用方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是異步編程

在實(shí)現(xiàn)異步調(diào)用之前,我們先了解一下,什么是異步編程?什么場(chǎng)景下適用等等情況。

我們都知道,在傳統(tǒng)的同步編程中,當(dāng)一個(gè)操作開始執(zhí)行時(shí),程序會(huì)阻塞并等待該操作完成,然后才能繼續(xù)執(zhí)行后續(xù)代碼。這種阻塞等待的方式可能會(huì)導(dǎo)致程序響應(yīng)性能下降,因?yàn)樵诘却倪^(guò)程中無(wú)法同時(shí)處理其他任務(wù)。這種顯而易見的,在某種耗時(shí)的場(chǎng)景下,就顯得無(wú)用了,甚至很影響體驗(yàn)。

如文件讀寫、網(wǎng)絡(luò)請(qǐng)求或計(jì)算密集型任務(wù),再如人臉融合特效等等,都是耗時(shí)的操作,這個(gè)時(shí)候,我們就需要異步編程了。

異步編程則不會(huì)阻塞程序的執(zhí)行,它將耗時(shí)的操作提交給后臺(tái)線程或其他執(zhí)行環(huán)境,并立即返回,使得程序可以繼續(xù)執(zhí)行其他任務(wù)。當(dāng)耗時(shí)操作完成后,會(huì)通過(guò)回調(diào)、事件或者輪詢等方式通知主線程,主線程再去處理操作結(jié)果或執(zhí)行相應(yīng)的回調(diào)函數(shù)。

CompletableFuture

今天我們就來(lái)了解下 CompletableFuture,它Java 8引入的一種功能強(qiáng)大的異步編程工具,可以用于實(shí)現(xiàn)復(fù)雜的異步操作和處理鏈?zhǔn)降漠惒饺蝿?wù)。

java方法異步執(zhí)行,Java,# 多線程,java,微服務(wù),多線程,異步編程,云原生,原力計(jì)劃

從這個(gè)JDK里,可以看出,它既實(shí)現(xiàn)了 Future 接口,擁有 Future 所有的特性,比如可以使用 get() 方法獲取返回值等。

也實(shí)現(xiàn)了CompletionStage接口,提供了豐富的方法來(lái)管理異步任務(wù)的執(zhí)行和處理任務(wù)結(jié)果。并且這些接口多達(dá)40多個(gè),完全足夠我們?nèi)粘K褂昧恕?/p>

1. supplyAsync

 1. CompletableFuture<T> supplyAsync(Supplier<? extends T> supplier)

該方法接受一個(gè)Supplier函數(shù)式接口作為參數(shù),用于執(zhí)行一個(gè)有返回值的異步任務(wù)。返回一個(gè)CompletableFuture對(duì)象,可以用于獲取異步任務(wù)的執(zhí)行結(jié)果。

參數(shù):

Supplier:一個(gè)無(wú)參的函數(shù)式接口,用于提供異步任務(wù)的結(jié)果。

2. runAsync

2、CompletableFuture<Void> runAsync(Runnable runnable)

該方法接受一個(gè)Runnable函數(shù)式接口作為參數(shù),用于執(zhí)行一個(gè)無(wú)返回值的異步任務(wù)。返回一個(gè)CompletableFuture對(duì)象,可以用于等待異步任務(wù)完成。

參數(shù):
Runnable:一個(gè)無(wú)參的函數(shù)式接口,用于執(zhí)行異步任務(wù)。

3. thenApply

3、CompletableFuture<T> thenApply(Function<? super T,? extends U> function)

該方法接受一個(gè)Function函數(shù)式接口作為參數(shù),用于對(duì)CompletableFuture的結(jié)果進(jìn)行處理,并返回新的CompletableFuture對(duì)象。

參數(shù):
Function:一個(gè)帶有一個(gè)參數(shù)的函數(shù)式接口,用于對(duì)異步任務(wù)的結(jié)果進(jìn)行轉(zhuǎn)換或處理。

4. thenAccept

4、CompletableFuture<Void> thenAccept(Consumer<? super T> consumer)

該方法接受一個(gè)Consumer函數(shù)式接口作為參數(shù),用于對(duì)CompletableFuture的結(jié)果進(jìn)行消費(fèi),沒有返回值

參數(shù):

Consumer:一個(gè)帶有一個(gè)參數(shù)的函數(shù)式接口,用于消費(fèi)異步任務(wù)的結(jié)果。

5. thenRun

5、CompletableFuture<Void> thenRun(Runnable action)

該方法接受一個(gè)Runnable函數(shù)式接口作為參數(shù),用于在CompletableFuture的結(jié)果完成后執(zhí)行指定的操作,沒有返回值。

參數(shù):
BiFunction:一個(gè)帶有兩個(gè)參數(shù)的函數(shù)式接口,用于合并兩個(gè)CompletableFuture的結(jié)果。

6. thenCombine

6CompletableFuture<U> thenCombine(CompletionStage<? extends V> other, BiFunction<? super T,? super U,? extends V> fn)

該方法接受一個(gè)CompletionStage對(duì)象和一個(gè)BiFunction函數(shù)式接口作為參數(shù),用于等待當(dāng)前CompletableFuture和另一個(gè)CompletionStage對(duì)象都完成后,將其結(jié)果進(jìn)行組合處理,并返回新的CompletableFuture對(duì)象。

參數(shù):

CompletionStage:代表一個(gè)異步任務(wù)的執(zhí)行狀態(tài)。

返回值:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-610519.html

  • CompletableFuture<T>:表示一個(gè)異步任務(wù)的結(jié)果,可以通過(guò)該對(duì)象獲取異步任務(wù)的執(zhí)行結(jié)果。
  • CompletableFuture<Void>:表示一個(gè)異步任務(wù)的結(jié)果,沒有返回值。

java 演示

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class CompletableFutureExample {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 使用supplyAsync方法創(chuàng)建一個(gè)CompletableFuture對(duì)象來(lái)執(zhí)行有返回值的異步任務(wù)
        CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
            System.out.println("異步任務(wù)正在執(zhí)行");
            return 100;
        });
        
        // 使用thenApply方法對(duì)異步任務(wù)的結(jié)果進(jìn)行處理,并返回新的CompletableFuture對(duì)象
        CompletableFuture<String> processedFuture = future.thenApply(result -> {
            System.out.println("對(duì)異步任務(wù)結(jié)果進(jìn)行處理");
            return "處理后的結(jié)果:" + result * 2;
        });
        
        // 使用get方法阻塞當(dāng)前線程,并獲取異步任務(wù)的執(zhí)行結(jié)果
        String result = processedFuture.get();
        System.out.println(result);
    }
}
異步任務(wù)正在執(zhí)行
對(duì)異步任務(wù)結(jié)果進(jìn)行處理
處理后的結(jié)果:200

到了這里,關(guān)于java 如何快速實(shí)現(xiàn)異步調(diào)用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java 異步執(zhí)行代碼(先返回結(jié)果,后執(zhí)行代碼)

    ? ? ? ? 在用戶那,角色那變更后,要更新數(shù)據(jù),因?yàn)楦乱容^長(zhǎng)時(shí)間,需要先返回結(jié)果(2:已接收待執(zhí)行)。更新結(jié)束后,再返回值結(jié)果。 (執(zhí)行結(jié)果.?0:執(zhí)行失敗?; 1:執(zhí)行成功; 2:已接收待執(zhí)行) 使用?ExecutorService 異步 加?Thread.sleep(1000 * 10); 就明顯看得出差別了。

    2024年02月09日
    瀏覽(27)
  • Java高并發(fā)系列: 使用wait - notify實(shí)現(xiàn)高效異步方法

    Java高并發(fā)系列: 使用wait - notify實(shí)現(xiàn)高效異步方法

    在項(xiàng)目開發(fā)中, 通常會(huì)有異步執(zhí)行操作, 例如: 提交一個(gè)異步清空一系列數(shù)據(jù)庫(kù)中ID = ${_id} 的記錄, 這個(gè)時(shí)候通常的做法是主線程將任務(wù)添加到一個(gè)異步隊(duì)列中, 后臺(tái)維護(hù)一個(gè)線程不斷地 循環(huán) 掃描這個(gè)隊(duì)列, 如果有需要執(zhí)行的任務(wù), 則執(zhí)行相應(yīng)的邏輯. 如下圖所示: 代碼實(shí)現(xiàn)如下

    2024年02月09日
    瀏覽(29)
  • JAVA的回調(diào)機(jī)制、同步/異步調(diào)用

    JAVA的回調(diào)機(jī)制、同步/異步調(diào)用

    同步調(diào)用是最基本的調(diào)用方式。類A的a()方法調(diào)用類B的b()方法, 類A的方法需要等到B類的方法執(zhí)行完成才會(huì)繼續(xù)執(zhí)行 。如果B的方法長(zhǎng)時(shí)間阻塞,就會(huì)導(dǎo)致A類方法無(wú)法正常執(zhí)行下去。 如果A調(diào)用B,B的執(zhí)行時(shí)間比較長(zhǎng),那么就需要考慮進(jìn)行異步處理,使得B的執(zhí)行不影響A。通常

    2024年02月14日
    瀏覽(22)
  • Java中如何使用消息隊(duì)列實(shí)現(xiàn)異步(ActiveMQ,RabbitMQ,Kafka)

    在 Java 中,可以使用消息隊(duì)列實(shí)現(xiàn)異步處理。下面是一個(gè)簡(jiǎn)單的示例代碼,用于說(shuō)明如何使用 ActiveMQ 實(shí)現(xiàn)消息隊(duì)列異步處理: 添加 ActiveMQ 依賴 在 pom.xml 文件中添加以下依賴: 創(chuàng)建消息隊(duì)列 創(chuàng)建一個(gè)名為 “TestQueue” 的消息隊(duì)列,并配置 ActiveMQ 連接信息: 創(chuàng)建消息消費(fèi)者

    2024年02月16日
    瀏覽(33)
  • SpringBoot如何優(yōu)雅的實(shí)現(xiàn)異步調(diào)用?

    Spring Boot 提供了多種方式來(lái)實(shí)現(xiàn)異步任務(wù),這里介紹三種主要實(shí)現(xiàn)方式。 Spring Boot 提供了多種方式來(lái)實(shí)現(xiàn)異步任務(wù),這里介紹三種實(shí)現(xiàn)方式。 @Async 注解是 Spring 提供的一種輕量級(jí)異步方法實(shí)現(xiàn)方式,它可以標(biāo)記在方法上,用來(lái)告訴 Spring 這個(gè)方法是一個(gè)異步方法,Spring 會(huì)將

    2024年02月07日
    瀏覽(15)
  • 【SpringBoot系列】如何優(yōu)雅地實(shí)現(xiàn)異步調(diào)用

    【SpringBoot系列】如何優(yōu)雅地實(shí)現(xiàn)異步調(diào)用

    1.前言 在現(xiàn)代的應(yīng)用程序開發(fā)中,異步調(diào)用是提高系統(tǒng)性能和響應(yīng)能力的重要手段之一。 Spring Boot作為一個(gè)快速開發(fā)框架,提供了多種方式來(lái)實(shí)現(xiàn)異步調(diào)用,使得開發(fā)者能夠更加優(yōu)雅地處理并發(fā)和異步任務(wù)。 本文將介紹如何在Spring Boot中實(shí)現(xiàn)異步調(diào)用的方法和技巧,幫助開發(fā)

    2024年02月07日
    瀏覽(25)
  • 深入理解Spring的@Async注解:實(shí)現(xiàn)異步方法調(diào)用

    在當(dāng)今高速發(fā)展的應(yīng)用開發(fā)領(lǐng)域,對(duì)于提升系統(tǒng)性能和響應(yīng)能力的需求越來(lái)越迫切。而異步編程作為一種解決方案,已經(jīng)成為現(xiàn)代應(yīng)用開發(fā)中的一項(xiàng)重要技術(shù)。本篇博客將帶您深入探究 Java 中的 @Async 注解,揭示其強(qiáng)大的異步執(zhí)行能力和精妙的實(shí)現(xiàn)機(jī)制。 異步編程是一種編程

    2024年02月05日
    瀏覽(27)
  • (線程池)多線程使用場(chǎng)景--es數(shù)據(jù)批量導(dǎo)入、數(shù)據(jù)匯總、異步調(diào)用;如何控制某個(gè)方法允許并發(fā)訪問線程的數(shù)量;對(duì)ThreadLocal的理解及實(shí)現(xiàn)原理、源碼解析、ThreadLocal的內(nèi)存泄露問題

    (線程池)多線程使用場(chǎng)景--es數(shù)據(jù)批量導(dǎo)入、數(shù)據(jù)匯總、異步調(diào)用;如何控制某個(gè)方法允許并發(fā)訪問線程的數(shù)量;對(duì)ThreadLocal的理解及實(shí)現(xiàn)原理、源碼解析、ThreadLocal的內(nèi)存泄露問題

    CountDownLatch(閉鎖/倒計(jì)時(shí)鎖) 用來(lái)進(jìn)行線程同步協(xié)作,等待所有線程完成倒計(jì)時(shí)(一個(gè)或者多個(gè)線程,等待其他多個(gè)線程完成某件事情之后才能執(zhí)行) 其中構(gòu)造參數(shù)用來(lái)初始化等待計(jì)數(shù)值 await() 用來(lái)等待計(jì)數(shù)歸零 countDown() 用來(lái)讓計(jì)數(shù) 減一 多線程使用場(chǎng)景一:( es數(shù)據(jù)批量導(dǎo)

    2024年04月25日
    瀏覽(46)
  • Java:Java程序通過(guò)執(zhí)行系統(tǒng)命令調(diào)用Python腳本

    本文實(shí)現(xiàn)功能:Java程序調(diào)用Python腳本 直接執(zhí)行 參考視頻 JAVA開發(fā)必會(huì)小技巧8——用代碼調(diào)用系統(tǒng)指令

    2024年02月14日
    瀏覽(34)
  • 【異步】Java 的 8 種異步實(shí)現(xiàn)方式

    異步執(zhí)行對(duì)于開發(fā)者來(lái)說(shuō)并不陌生,在實(shí)際的開發(fā)過(guò)程中,很多場(chǎng)景多會(huì)使用到異步,相比同步執(zhí)行,異步可以大大縮短請(qǐng)求鏈路耗時(shí)時(shí)間,比如:發(fā)送短信、郵件。 異步的八種實(shí)現(xiàn)方式: 線程異步 Thread/Runnable Future + Callable 異步框架 CompletableFuture Spring 注解 @Async Spring App

    2024年02月10日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包