java CompletableFuture 異步編程工具用法1

1、測試異步調用:

static void testCompletableFuture1() throws ExecutionException, InterruptedException {// 1、無返回值的異步任務。異步線程執行RunnableCompletableFuture.runAsync(() -> System.out.println("only you"));// 2、有返回值的異步任務。執行Supplier函數并返回結果CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "3個時辰內必須找人解毒,不過老夫也可以幫忙哦");System.out.println("supplyAsync, result: " + future.get()); // 阻塞獲取結果}

打印:

2、鏈式調用:

static void testCompletableFuture2() throws ExecutionException, InterruptedException {System.out.println("main thread, id: " +  Thread.currentThread().getId());// 鏈式操作CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {System.out.println("supplyAsync thread: " + Thread.currentThread().getId());return "我行我素";});// 結果轉換future = future.thenApply(s -> {System.out.println("thenApply thread: " + Thread.currentThread().getId());return s + " !!!";});// 結果消費CompletableFuture<Void> future2 = future.thenAccept(s -> {System.out.println("thenAccept thread: " + Thread.currentThread().getId());System.out.println(s);// 輸出結果});}

打印:

3、依賴其他Future任務

// thenCompose()串聯多個異步任務,前一個任務結果為后一個任務的輸入static void testCompletableFuture3() throws ExecutionException, InterruptedException {CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "haiyangxuanfeng");future = future.thenCompose(s -> CompletableFuture.supplyAsync(s::toUpperCase));future.thenAccept(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}}).get();}

打印:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904722.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904722.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904722.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中國自動駕駛研發解決方案,第一!

4月28日&#xff0c;IDC《中國汽車云市場(2024下半年)跟蹤》報告發布&#xff0c;2024下半年中國汽車云市場整體規模達到65.1億元人民幣&#xff0c;同比增長27.4%。IDC認為&#xff0c;自動駕駛技術深化與生成式AI的發展將為汽車云打開新的成長天花板&#xff0c;推動云計算在…

如何快速獲取字符串的UTF-8或UTF-16編碼二進制數據?數值轉換成字符串itoa不是C標準?其它類型轉換成字符串?其它類型轉換成數值類型?

目錄 如何快速獲取字符串的UTF-8或UTF-16編碼二進制數據? 數值轉換成字符串itoa不是C標準&#xff1f; 其它類型轉換成字符串 其它類型轉換成數值類型 轉換成數值的API 為什么有的編程語言允許字符串和整數相加? 字符串拼接 字符串字面量自動連接 如何快速獲取字符串…

Android SDK 國內鏡像及配置方法(2025最新,包好使!)

2025最新android sdk下載配置 1、首先你需要有android sdk manager2、 直接上教程修改hosts文件配置域名映射即可(不用FQ)2.1 獲取ping dl.google.com域名ip地址2.2 配置hosts文件域名映射2.3 可以隨意下載你需要的sdk3、 總結:走過彎路,踩過坑!!!大家就不要踩了!避坑1…

MySQL事務隔離機制與并發控制策略

MySQL事務隔離機制與并發控制策略 MySQL事務隔離機制與并發控制策略一、數據庫并發問題全景解析二、事務隔離級別深度解析三、MySQL并發控制核心技術1. 多版本并發控制&#xff08;MVCC&#xff09;2. 鎖機制 四、隔離級別實現差異對比五、生產環境最佳實踐六、高級優化技巧七、…

Python `zip()` 函數是什么

Python zip() 函數是什么 在 Python 里,zip() 是一個內置函數,其主要作用是將多個可迭代對象(像列表、元組、字符串等)中的元素一一對應地組合成元組,最終返回一個迭代器,這個迭代器會生成這些元組。 基本語法 zip(*iterables)其中,*iterables 代表可變數量的可迭代對…

Jenkins 改完端口號啟動不起來了

讓我們將 Jenkins 恢復到默認的 8080 端口&#xff0c;確保它能正常啟動&#xff1a; 1. 修改 Jenkins 的配置文件&#xff1a; sudo nano /etc/default/jenkins 將內容修改為&#xff1a; HTTP_PORT8080 JENKINS_ARGS"--webroot/var/cache/jenkins/war --httpPort8080…

【AWS+Wordpress-準備階段】AWS注冊+創建EC2實例

前言 自學筆記&#xff0c;解決問題為主&#xff0c;親測有效&#xff0c;歡迎補充。 本地WP文件部署到AWS整體步驟如下&#xff1a;&#xff08;本文重點&#xff1a;AWS準備完成&#xff09; 0. [AWS 準備] 注冊 AWS 并創建 EC2 實例 ↓ 1. [生成安裝包&#xff1a;用 Du…

使用pytorch保存和加載預訓練的模型方法

需要使用到的函數 在 PyTorch 中&#xff0c;torch.save() 和 torch.load() 是用于保存和加載模型的核心函數。 torch.save() 函數 主要用途&#xff1a;將模型或模型的狀態字典&#xff08;state_dict&#xff09;保存到文件中。 語法&#xff1a; torch.save(obj, f, pi…

Python從入門到高手8.3節-元組的常用操作方法

目錄 11.3.1 元組的常用操作方法 11.3.2 元組的查找 11.3.3 祈禱明天不再打雷下雨 11.3.1 元組的常用操作方法 元組類型是一種抽象數據類型&#xff0c;抽象數據類型定義了數據類型的操作方法&#xff0c;在本節的內容中&#xff0c;著重介紹元組類型的操作方法。 ? 元組是…

圖書推薦(協同過濾)算法的實現:基于訂單購買實現相似用戶的圖書推薦

代碼部分 package com.ruoyi.system.service.impl;import com.ruoyi.system.domain.Book; import com.ruoyi.system.domain.MyOrder; import com.ruoyi.system.mapper.BookMapper; import com.ruoyi.system.mapper.MyOrderMapper; import com.ruoyi.system.service.IBookRecom…

JMeter快速指南:命令行生成HTML測試報告(附樣例命令解析)

一、核心命令解析 jmeter -g Dash_CapacityTest_01_AllModules_1000.jtl -o report/ 參數 作用 示例文件說明 -g 指定.jtl結果文件路徑 -o 指定報告輸出目錄 自動創建report文件夾 二、操作步驟&#xff08;Windows/Linux/Mac通用&#xff09; 進入JMe…

2025年滲透測試面試題總結-滲透崗位全職工作面試(附回答)(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 一、通用基礎類問題 1. 自我介紹 2. 職業動機與規劃 3. 加班/出差接受度 二、安全技術類問題 1. 漏…

使用DEEPSEEK快速修改QT創建的GUI

QT的GUI&#xff0c;本質上是使用XML進行描述的&#xff0c;在QT CREATOR的界面編輯處&#xff0c;按CTRL2 切換到代碼視圖&#xff0c;CTRL3切換到編輯器視圖。 CTRL2 切換到代碼視圖 CTRL3 切換到編輯器視圖 鼠標左鍵點擊代碼視圖中&#xff0c;按CTRLA → CTRLC復制XML代碼…

draw.io流程圖使用筆記

文章目錄 圖形較少的問題安裝版好還是非安裝版好業務系統嵌入的draw.io如何導入呢?如何判斷組合和取消組合如何快速選中框里面的內容有時候選不到文本怎么辦連接線如何不走直角 航點和取消航點支持多少種圖形多個連接點?多個圖形對齊雙向箭頭如何畫圖形的大小 其他流程圖圖標…

音頻相關基礎知識

主要參考&#xff1a; 音頻基本概念_音頻和音調的關系-CSDN博客 音頻相關基礎知識&#xff08;采樣率、位深度、通道數、PCM、AAC&#xff09;_音頻2通道和8ch的區別-CSDN博客 概述 聲音的本質 聲音的本質是波在介質中的傳播現象&#xff0c;聲波的本質是一種波&#xff0c;是一…

MySQL中隔離級別那點事

引言 在MySQL中&#xff0c;事務隔離級別和二進制日志&#xff08;binlog&#xff09;的格式密切相關&#xff0c;直接影響數據的一致性和復制的正確性。尤其是在“已提交讀”&#xff08;Read Committed&#xff09;隔離級別下&#xff0c;由于沒有使用間隙鎖&#xff0c;某些…

LeetCode 熱題 100 238. 除自身以外數組的乘積

LeetCode 熱題 100 | 238. 除自身以外數組的乘積 大家好&#xff0c;今天我們來解決一道經典的算法問題——除自身以外數組的乘積。這道題在 LeetCode 上被標記為中等難度&#xff0c;要求在不使用除法的情況下&#xff0c;計算數組中每個元素的乘積&#xff0c;其中每個元素的…

【網絡編程】三、TCP網絡套接字編程

文章目錄 TCP通信流程Ⅰ. 服務器日志類實現Ⅱ. TCP服務端1、服務器創建流程2、創建套接字 -- socket3、綁定服務器 -- bind&#x1f38f;4、服務器監聽 -- listen&#x1f38f;5、獲取客戶端連接請求 -- acceptaccept函數返回的套接字描述符是什么&#xff0c;不是已經有一個了…

STM32的SysTick

SysTick介紹 定義&#xff1a;Systick&#xff0c;即滴答定時器&#xff0c;是內核中的一個特殊定時器&#xff0c;用于提供系統級的定時服務。該定時器是一個24位的遞減計數器&#xff0c;具有自動重載值寄存器的功能。當計數器到達自動重載值時&#xff0c;它會自動重新加載…

【Java項目腳手架系列】第一篇:Maven基礎項目腳手架

【Java項目腳手架系列】第一篇:Maven基礎項目腳手架 前言 在Java開發中,一個好的項目腳手架可以大大提高開發效率,減少重復工作。本系列文章將介紹各種常用的Java項目腳手架,幫助開發者快速搭建項目。今天,我們先從最基礎的Maven項目腳手架開始。 什么是項目腳手架? …