Java 多线程 Java多线程提交按照时间顺序获取线程结果详解流程
剑客阿良_ALiang 人气:0想了解Java多线程提交按照时间顺序获取线程结果详解流程的相关内容吗,剑客阿良_ALiang在本文为您仔细讲解Java 多线程的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java,多线程,Java,线程顺序,下面大家一起来学习吧。
Maven依赖
其实要不要无所谓。主要是为了方便。
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.15</version> </dependency>
代码
不废话,上代码。
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 <T> 泛型 */ public static <T> void submit(List<Callable<T>> tasks, Consumer<T> consumer) { CompletionService<T> 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<Callable<Integer>> 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(); } }
执行看看
OK,先执行结束的线程,先消费。
总结
一个姑娘,如果有被人喜欢,而且那个人喜欢的干干净净,怎么都是一件美好的事情。
如果本文对你有帮助的话,不要吝啬你的赞,狠狠的甩给我。
加载全部内容