使用 ForkJoin 的 wrokstealing 而不是普通线程池的队列有什么好处?
Whats the benefit to use wrokstealing from ForkJoin rather than just ordinary thread pool's queue?
使用 ForkJoin 的工作窃取而不是普通线程池的队列有什么好处?
ForkJoinPool 的“workstealing”是否比从线程池的队列中获取任务更好?这不是偷吗?
ForkJoinPool 专为递归操作而设计。
例如,这可能是像 MergeSort 这样的 divide-and-conquer 算法。
在这样的算法中,一个线程通常会等待 children 完成。
这就是“工作窃取”的由来。实际有工作要做的线程会从等待线程中窃取工作。
如果您有固定数量的不会产生新线程的线程,您应该只使用普通的 ExecutorService 线程池。
使用 ForkJoin 的工作窃取而不是普通线程池的队列有什么好处? ForkJoinPool 的“workstealing”是否比从线程池的队列中获取任务更好?这不是偷吗?
ForkJoinPool 专为递归操作而设计。 例如,这可能是像 MergeSort 这样的 divide-and-conquer 算法。 在这样的算法中,一个线程通常会等待 children 完成。
这就是“工作窃取”的由来。实际有工作要做的线程会从等待线程中窃取工作。
如果您有固定数量的不会产生新线程的线程,您应该只使用普通的 ExecutorService 线程池。