Java多线程提交按照时间顺序获取线程结果详解流程

Maven依赖 其实要不要无所谓。主要是为了方便。

cn.hutoolhutool-all5.7.15

代码 不废话,上代码。
package com.hy.csdn.tools; import cn.hutool.core.thread.ThreadUtil; import java.util.Arrays; import java.util.List; import java.util.concurrent.*; import java.util.function.Consumer; /** * @author huyi * @date 2021/11/1 下午2:22 */public class ThreadPriorityUtil {private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(100); /*** 提交多个任务* @param tasks 任务* @param consumer 结果消费* @param 泛型*/public static void submit(List> tasks, Consumer consumer) {CompletionService completionService = new ExecutorCompletionService<>(EXECUTOR_SERVICE); tasks.forEach(completionService::submit); tasks.forEach(x -> {try {consumer.accept(completionService.take().get()); } catch (InterruptedException e) {e.printStackTrace(); } catch (ExecutionException e) {e.printStackTrace(); }}); } public static void destroy() {System.out.println("摧毁线程池"); EXECUTOR_SERVICE.shutdown(); } public static void main(String[] args) {// 启动3个线程执行试试看List> tasks =Arrays.asList(() -> {try {TimeUnit.SECONDS.sleep(30); System.out.println("task 30 completed"); } catch (InterruptedException e) {e.printStackTrace(); }return 30; },() -> {try {TimeUnit.SECONDS.sleep(10); System.out.println("task 10 completed"); } catch (InterruptedException e) {e.printStackTrace(); }return 10; },() -> {try {TimeUnit.SECONDS.sleep(20); System.out.println("task 20 completed"); } catch (InterruptedException e) {e.printStackTrace(); }return 20; }); ThreadPriorityUtil.submit(tasks, x -> System.out.println("回调结果:" + x)); ThreadUtil.sleep(40000L); ThreadPriorityUtil.destroy(); }}

执行看看
Java多线程提交按照时间顺序获取线程结果详解流程
文章图片

【Java多线程提交按照时间顺序获取线程结果详解流程】OK,先执行结束的线程,先消费。
总结 一个姑娘,如果有被人喜欢,而且那个人喜欢的干干净净,怎么都是一件美好的事情。
如果本文对你有帮助的话,不要吝啬你的赞,狠狠的甩给我。
Java多线程提交按照时间顺序获取线程结果详解流程
文章图片

到此这篇关于Java多线程提交按照时间顺序获取线程结果详解流程的文章就介绍到这了,更多相关Java 多线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读