247得票13回答
处理Java ExecutorService任务的异常

我正在尝试使用Java的ThreadPoolExecutor类来运行大量重量级任务,使用固定数量的线程。每个任务都有许多可能由于异常而失败的地方。 我已经创建了ThreadPoolExecutor的子类,并覆盖了afterExecute方法,该方法应提供在运行任务时遇到的任何未捕获异常。然而...

197得票8回答
Executors.newCachedThreadPool()与Executors.newFixedThreadPool()的区别

newCachedThreadPool() 和 newFixedThreadPool(),何时使用哪一个呢?从资源利用角度来看,哪种策略更好呢?

169得票12回答
ThreadPoolExecutor中的核心池大小与最大池大小的区别

当我们用 ThreadPoolExecutor 时,核心池大小和最大池大小有什么区别?可以通过示例来解释吗?

144得票14回答
有没有可能创建一个具有大小限制的缓存线程池?

看起来似乎不可能创建一个带有线程数量限制的缓存线程池。 以下是标准Java库中静态Executors.newCachedThreadPool的实现方式: public static ExecutorService newCachedThreadPool() { return new T...

120得票10回答
如何让ThreadPoolExecutor在排队之前增加线程数达到最大值?

对于支持许多人使用的ExecutorService线程池的默认行为ThreadPoolExecutor 我已经感到沮丧了一段时间。引用Javadocs的话: 如果正在运行的线程数超过corePoolSize但小于maximumPoolSize,则仅在队列已满的情况下创建新线程。 这意味着,...

72得票7回答
如何在不关闭执行器的情况下等待线程池中所有任务完成?

我无法使用shutdown()和awaitTermination(),因为在等待期间有可能向ThreadPoolExecutor添加新任务。 因此,我正在寻找一种方法,在不阻止添加新任务的情况下等待ThreadPoolExecutor清空其队列并完成所有任务。 如果有区别的话,这是用于An...

64得票6回答
ExecutorService与ThreadPoolExecutor使用LinkedBlockingQueue的区别

我正在开发一个多线程项目,需要生成多个线程来测试我的客户端代码的端到端性能,因为我正在进行负载和性能测试。所以我编写了下面的代码,它使用ExecutorService。 以下是使用ExecutorService的代码:public class MultithreadingExample { ...

44得票4回答
SingleThreadExecutor VS 普通线程

除了 Executor 接口具有一些优点(例如管理)之外,执行以下哪种方式是否存在真正的内部差异(大的性能差异,资源消耗等...):ExecutorService executor = Executors.newSingleThreadExecutor(); executor.submit(r...

35得票4回答
Java-5的ThreadPoolExecutor相比Java-7的ForkJoinPool有什么优势?

Java 5 引入了 Executor 框架,通过线程池支持异步任务执行,其核心是 java.util.concurrent.ThreadPoolExecutor 实现的线程池。Java 7 还添加了一种替代线程池,即 java.util.concurrent.ForkJoinPool。 从...

28得票1回答
Spring ThreadPoolTaskScheduler与ThreadPoolTaskExecutor的区别

在Spring文档中提到: ThreadPoolTaskScheduler实际上也实现了Spring的TaskExecutor接口,因此可以使用单个实例进行尽可能快速的异步执行以及计划的、可能是重复的执行。 那么,在哪些情况下我们会使用ThreadPoolTaskExecutor实...