ThreadPoolTaskExecutor实现多线程并处理返回值

本文探讨了如何在Java中使用ThreadPoolTaskExecutor实现有返回值的多线程。主要方法包括submit(Callable<T> task)和executor.execute(Runnable task),前者通过Future<T>获取返回值,后者结合CountDownLatch确保所有任务执行完成后再处理结果。CountDownLatch作为同步锁,保证线程安全,避免数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章主要记录一下有返回值的多线程该怎么实现。

之前的文章有提到过ThreadPoolTaskExecutor线程池执行任务有几个方法:

executor.execute(Runnable task):完美适用于没有返回值的情况。未捕获的异常会抛出

executor.submit(Runnable task):也适用于没返回值的情况,未捕获的异常不会抛出。

executor.submit(Callable<T> task):有返回值。未捕获的异常不会抛出;其实这个方法内部也是调用的execute方法,但是当出现异常是会使用setException方法把异常信息放入Future中,所以要想获取该方法的异常信息则需要执行Future的get方法来捕获异常信息。

先分析一下需要返回值的实现要求:

          一:是执行后要得到想要的返回值。

          二:是要在所有线程执行结束后对返回值进行进一步处理。

总结有返回值的实现方式有两种:

1.使用submit(Callable<T> task)方法,返回值定义为Future<User>类型,执行后使用Future<T>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WannaRunning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值