我对ExecutorService和 的内部调度机制有点困惑ForkJoinPool。
我了解ExecutorService调度是通过这种方式完成的。
一堆任务在排队。一旦线程可用,它将处理第一个可用任务,依此类推。
同时, aForkJoinPool被表示为不同的,因为它使用了工作窃取算法。如果我理解正确,这意味着一个线程可以从另一个线程窃取一些任务。
然而,我并不真正理解在ExecutorService和 中实现的机制之间的区别ForkJoinPool。根据我的理解,这两种机制都应该尽可能减少每个线程的空闲时间。
我会理解,如果在 a 的情况下ExecutorService,每个线程都有自己的队列。然而,情况并非如此,因为队列由池的不同线程共享......
任何澄清将是非常受欢迎的!