CompletionService

必備知識:
三種創建線程的方式
java線程池

CompletionService是Java并發庫中的一個接口,用于簡化處理一組異步任務的執行和結果收集。它結合了Executor和BlockingQueue的功能,幫助管理任務的提交和完成。CompletionService的主要實現類是ExecutorCompletionService
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
ExecutorCompletionService例子:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;public class CompletionServiceExample {public static void main(String[] args) throws InterruptedException, ExecutionException {ExecutorService executorService = Executors.newFixedThreadPool(3);CompletionService<Integer> completionService = new ExecutorCompletionService<>(executorService);// 提交一組任務List<Callable<Integer>> tasks = new ArrayList<>();for (int i = 0; i < 5; i++) {final int index = i;tasks.add(() -> {TimeUnit.SECONDS.sleep(index);return index;});}for (Callable<Integer> task : tasks) {completionService.submit(task);}// 獲取任務結果for (int i = 0; i < tasks.size(); i++) {Future<Integer> future = completionService.take();Integer result = future.get();System.out.println("Task completed with result: " + result);}// 關閉線程池executorService.shutdown();}
}

在這里插入圖片描述

public class ExecutorCompletionService<V> implements CompletionService<V> {private final Executor executor;private final BlockingQueue<Future<V>> completionQueue;public ExecutorCompletionService(Executor executor) {this.executor = executor;this.completionQueue = new LinkedBlockingQueue<>();}public ExecutorCompletionService(Executor executor, BlockingQueue<Future<V>> completionQueue) {this.executor = executor;this.completionQueue = completionQueue;}@Overridepublic Future<V> submit(Callable<V> task) {RunnableFuture<V> f = new FutureTask<>(task);executor.execute(new QueueingFuture(f));return f;}@Overridepublic Future<V> submit(Runnable task, V result) {RunnableFuture<V> f = new FutureTask<>(task, result);executor.execute(new QueueingFuture(f));return f;}@Overridepublic Future<V> take() throws InterruptedException {return completionQueue.take();}@Overridepublic Future<V> poll() {return completionQueue.poll();}@Overridepublic Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException {return completionQueue.poll(timeout, unit);}private class QueueingFuture extends FutureTask<V> {QueueingFuture(RunnableFuture<V> task) {super(task);}@Overrideprotected void done() {completionQueue.add(this);}}
}

在這里插入圖片描述

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

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

相關文章

前端必修技能:高手進階核心知識分享 - CSS 陰影屬性詳解

CSS 涉及設計到陰影的相關內容包括三個方面&#xff1a;box-shadow屬性&#xff08;盒子陰影&#xff09;、 text-shadow屬性&#xff08;文本陰影&#xff09;、drop-shadow濾鏡。 本篇文章旨在詳細介紹和分析三種陰影的具體參數設置和典型用例。 box-shadow屬性&#xff08;…

預防臨床預測模型中可能的“算法歧視”

預防臨床預測模型中可能的“算法歧視” 概要&#xff1a;如果訓練數據中存在性別方面的不均衡&#xff0c;會讓訓練出的模型存在性別方面的“算法歧視”&#xff0c;進而導致某種性別下存在更多的誤診誤治&#xff0c;最終造成醫療資源分配的不公平的倫理問題&#xff0c;導致模…

04.C1W3.Vector Space Models

往期文章請點這里 目錄 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

STM32-SPI和W25Q64

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. SPI&#xff08;串行外設接口&#xff09;通信1.1 SPI通信簡介1.2 硬件電路1.3 移位示意圖1.4 SPI時序基本單元1.5 SPI時序1.5.1 發送指令1.5.2 指定地址寫1.5.3 指定地址讀 2. W25Q642.1 W25Q64簡介2.2 硬件電路2…

嵌入式C語言面試相關知識——內存管理(不定期更新)

嵌入式C語言面試相關知識——內存管理&#xff08;不定期更新&#xff09; 一、博客聲明二、自問題目1、嵌入式系統的內存布局是怎么樣的&#xff1f;2、動態內存分配在嵌入式系統中的使用有什么注意事項&#xff1f;3、什么是內存碎片&#xff0c;如何減少內存碎片&#xff1f…

win11自動刪除文件的問題,安全中心提示

win11自動刪除文件的問題&#xff0c;解決方法&#xff1a; 1.點擊任務欄上的開始圖標&#xff0c;在顯示的應用中&#xff0c;點擊打開設置。 或者點擊電腦右下角的開始也可以 2.點擊設置。也可以按Wini打開設置窗口。 3.左側點擊隱私和安全性&#xff0c;右側點擊Windows安全…

我國網絡安全領域有哪些法律法規?主要內容是什么?

1. 背景介紹 網絡信息安全方面的法規在全球范圍內都有相應的立法&#xff0c;我們主要的立法有《網絡安全法》、《密碼法》、《數據安全法》以及《個人信息保護法》。當前也有一些相關的條例和管理辦法&#xff0c;接下來就為大家一一介紹。 2. 法規介紹 在中國&#xff0c;…

多線程(進階)

前言&#x1f440;~ 上一章我們介紹了線程池的一些基本概念&#xff0c;今天接著分享多線程的相關知識&#xff0c;這些屬于是面試比較常見的&#xff0c;大部分都是文本內容 常見的鎖策略 樂觀鎖 悲觀鎖 輕量鎖 重量級鎖 自旋鎖 掛起等待鎖 可重入鎖和不可重入鎖 互斥…

Leetcode 3207. Maximum Points After Enemy Battles

Leetcode 3207. Maximum Points After Enemy Battles 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3207. Maximum Points After Enemy Battles 1. 解題思路 這一題的話其實關鍵在于說是想明白最優策略&#xff0c;事實上這道題的最優策略就是撿著最弱的enemy薅&#xff0c;…

接口測試分析、設計以及實現

接口相關理論 ui功能測試和接口測試哪個先執行&#xff1f;–為什么 結論&#xff1a;接口測試先執行 原因&#xff1a;ui功能測試需要等待前端頁面開發完成、后臺接口開發完后且前端與后端聯調完成。ui功能測試與接口測試的區別&#xff1f; ui功能&#xff1a;功能調用&am…

學習筆記——交通安全分析14

目錄 前言 當天學習筆記整理 5城市主干道交通安全分析 結束語 前言 #隨著上一輪SPSS學習完成之后&#xff0c;本人又開始了新教材《交通安全分析》的學習 #整理過程不易&#xff0c;喜歡UP就點個免費的關注趴 #本期內容接上一期13筆記 當天學習筆記整理 5城市主干道交…

Avalonia中的Property

文章目錄 前言附加屬性樣式屬性直接屬性總結前言 在WPF中, 是可以定義依賴屬性和附加屬性的 依賴屬性: 當您需要單獨創建控件時, 并且希望控件的某個部分能夠支持數據綁定時, 你則可以使用到依賴屬性。 通過DependencyProperty.Register注冊依賴屬性 附加屬性: 這種情況很多,…

【原理+使用】DeepCache: Accelerating Diffusion Models for Free

論文&#xff1a;arxiv.org/pdf/2312.00858 代碼&#xff1a;horseee/DeepCache: [CVPR 2024] DeepCache: Accelerating Diffusion Models for Free (github.com) 介紹 DeepCache是一種新穎的無訓練且幾乎無損的范式&#xff0c;從模型架構的角度加速了擴散模型。DeepCache利…

【因果推斷】優惠券政策對不同店鋪的影響

這次依然是用之前rossmann店鋪競賽的數據集。 之前的數據集探索處理在這里已經做過了&#xff0c;此處就不再贅述了CSDN鏈接 數據集地址&#xff1a;競賽鏈接 這里探討數據集中Promo2對于每家店鋪銷售額的影響。其中&#xff0c;Promo2是一個基于優惠券的郵寄活動&#xff0c;發…

SQL Server 2022 中的 Tempdb 性能改進非常顯著

無論是在我的會話中還是在我寫的博客中&#xff0c;Tempdb 始終是我的話題。然而&#xff0c;當談到 SQL Server 2022 中引入的重大性能變化時&#xff0c;我從未如此興奮過。他們解決了我們最大的性能瓶頸之一&#xff0c;即系統頁面閂鎖并發。 在 SQL Server 2019 中&#x…

三級_網絡技術_06_IP地址規劃技術

1.下列對IPv6地址表示中&#xff0c;錯誤的是()。 AE1A:0:0:0:0:A2:F3:FE08:5 E3E0::1A90:FE:0:4CA2:9C5C E2C1::0:0:81/48 :E140:1A5C:0:05D9 2.下列對IPv6地址表示中&#xff0c;錯誤的是()。 1F1A:0:0:0:0:A2:F3:FE08:3 E360::2A90:FE:0:4CA2:9C5A B2C1::0:0:81/48 …

Go語言如何入門,有哪些書推薦?

Go 語言之所以如此受歡迎&#xff0c;其編譯器功不可沒。Go 語言的發展也得益于其編譯速度夠快。 對開發者來說&#xff0c;更快的編譯速度意味著更短的反饋周期。大型的 Go 應用程序總是能在幾秒鐘之 內完成編譯。而當使用 go run編譯和執行小型的 Go 應用程序時&#xff0c;其…

如何利用Github Action實現自動Merge PR

我是螞蟻背大象(Apache EventMesh PMC&Committer)&#xff0c;文章對你有幫助給項目rocketmq-rust star,關注我GitHub:mxsm&#xff0c;文章有不正確的地方請您斧正,創建ISSUE提交PR~謝謝! Emal:mxsmapache.com 1. 引言 GitHub Actions 是 GitHub 提供的一種強大而靈活的自…

(九)Docker 的網絡通信

文章目錄 1、常用模式2、概念了解2.1、Docker 內容器的通信2.2、宿主機和 Docker容器的通信 1、常用模式 直接使用 端口映射&#xff0c;宿主機:宿主機端口->容器 ip:容器端口端口映射宿主機 hosts 映射&#xff0c;首先在宿主機 /etc/hosts文件中增加 宿主機 ip:容器 host…

Mojo: 輕量級Perl框架的魔力

在Perl的豐富生態系統中&#xff0c;Mojolicious&#xff08;簡稱Mojo&#xff09;是一個輕量級的實時Web框架&#xff0c;以其極簡的API和強大的功能而受到開發者的喜愛。Mojo不僅適用于構建高性能的Web應用&#xff0c;還可以用來編寫簡單的腳本和命令行工具。本文將帶你探索…