【发布时间】:2017-05-29 06:48:56
【问题描述】:
Apache 引入了一个名为WaterMarkExecutor 的新线程池,它扩展了ThreadPoolExecutor。但我无法理解 WaterMarkExecutor 的动机。为什么需要它?和 ThreadPoolExecutor 相比有什么优势?
【问题讨论】:
标签: java threadpool threadpoolexecutor
Apache 引入了一个名为WaterMarkExecutor 的新线程池,它扩展了ThreadPoolExecutor。但我无法理解 WaterMarkExecutor 的动机。为什么需要它?和 ThreadPoolExecutor 相比有什么优势?
【问题讨论】:
标签: java threadpool threadpoolexecutor
documentation 似乎表明水印在队列大小上。如果队列达到一定大小,将添加更多线程,直到最大线程数。这与在所有其他线程都使用完后立即开始添加线程的普通执行器不同。
如果您只想在一定数量的任务排队后创建更多线程并可能增加系统负载,这将很有用。这是系统负载和队列排空速度之间的平衡行为。
在这个执行器中所有核心池线程都用完后排队 发生直到水印。如果之后提交的任务较多 队列被填满到水印线程数 增加到最大值。如果任务数量继续增加 队列开始填满。如果队列是有界队列并且队列 已完全填满,则执行 RejectedExecutionHandler 指定的。否则任务被拒绝。
【讨论】: