我正在阅读有关 Executors.newWorkStealingPool 的内容,并且想知道如何设置它。
我的线程将从LinkedBlockingQueue中拉出,因此将连续运行(除非在“take”调用时被阻止)。
假设我不知道运行此代码的主机上将提供多少个内核。我如何知道要添加多少个 Runnable 对象实例?
Runnable processRecord = () -> {
try {
consumeRecord(blockingQueue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
public void setup() {
ExecutorService workPool = Executors.newWorkStealingPool();
-----> 我传入了多少个线程实例?
workPool.submit(processRecord);
}
更有可能 - 我如何(正确)使用这个线程构造?
最佳答案
Runnables
提交到工作窃取池 (ForkJoinPool
) 会执行一次(就像在任何其他线程池中一样)。
通过 processRecord
的示例实现,您需要为 blockingQueue
中的每个元素提交一个
关于java - 需要提交多少次调用才能与 newWorkStealingPool 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422054/