使用WaterMarkExecutor而不是ThreadPoolExecutor有什么好处?

时间:2017-01-13 19:47:41

标签: java threadpool threadpoolexecutor

Apache引入了一个名为WaterMarkExecutor的新线程池,扩展了ThreadPoolExecutor。但我无法理解WaterMarkExecutor的动机。为什么需要它?它与ThreadPoolExecutor相比有什么优势?

1 个答案:

答案 0 :(得分:0)

documentation似乎表明水印在队列大小上。如果队列达到一定大小,则会添加更多线程,直到最大线程数。这与使用所有其他线程时开始添加线程的普通执行程序不同。

如果您只想在一定数量的任务排队后创建更多线程并可能为系统添加负载,那么这将非常有用。它是系统负载和队列排放速度之间的平衡行为。

  

在使用所有核心池线程排队后,在此执行程序中   发生在水印之前。如果之后提交的任务越多   队列中填充了水印线程数   增加到最大如果任务数量继续增加了   队列开始填满。如果队列是有界队列和队列   已完全填满RejectedExecutionHandler,如果有的话   指定。否则任务被拒绝。