【发布时间】:2021-11-07 10:48:04
【问题描述】:
使用 ForkJoin 的工作窃取而不是普通线程池的队列有什么好处? 来自 ForkJoinPool 的“工作窃取”是否比从线程池队列中获取任务更好?不是偷东西吗?
【问题讨论】:
-
...或者这个,也是一个很好的解释:stackoverflow.com/questions/33448465/…
标签: java forkjoinpool work-stealing
使用 ForkJoin 的工作窃取而不是普通线程池的队列有什么好处? 来自 ForkJoinPool 的“工作窃取”是否比从线程池队列中获取任务更好?不是偷东西吗?
【问题讨论】:
标签: java forkjoinpool work-stealing
ForkJoinPool 专为递归操作而设计。 例如,这可能是像 MergeSort 这样的分治算法。 在这样的算法中,一个线程通常会等待子进程完成。
这就是“偷工减料”的用武之地。实际上有工作要做的人会从等待的线程中偷走工作。
如果您有固定数量的不会产生新线程的线程,您应该只使用普通的 ExecutorService 线程池。
【讨论】: