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

网友投稿 288 2022-09-18


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

Maven依赖

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

cn.hutool

hutool-all

5.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)ZuMPPfTyON {

e.printStackTrace();

} catch (ExecutionException e) {

e.printStackTrace();

}

});

}

public static void destroy() {

System.out.println("摧毁线程池");

EXECUTOR_SERVICE.http://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();

}

}

执行看看

OK,先执行结束的线程,先消费。

总结

一个姑娘,如果有被人喜欢,而且那个人喜欢的干干净净,怎么都是一件美好的事情。

如果本文对你有帮助的话,不要吝啬你的赞,狠狠的甩给我。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ACL实验(acl实验心得)
下一篇:Cisco MSTP+VRRP+DHCP+静态路由综合实验
相关文章

 发表评论

暂时没有评论,来抢沙发吧~