需要提交多少次调用才能与 newWorkStealingPool 一起使用?

我正在阅读有关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);

}

更有可能的是 - 我如何(正确)使用这个线程构造?


梵蒂冈之花
浏览 76回答 1
1回答

慕的地10843

Runnables提交到工作窃取池 ( ForkJoinPool) 会执行一次(就像在任何其他线程池中一样)。对于示例实现,processRecord您需要为中的每个元素提交一个blockingQueue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java