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

标签 java multithreading

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

相关文章:

java - Cookie CsrfTokenRepository.withHttpOnlyFalse() 做什么以及何时使用它?

java - 注册模块 mainactivity.java react native

c# - 将 ThreadPool 与回调一起使用

ios - 对 NSURLRequest 进行排队以模拟同步、阻塞请求

c++ - 尝试使用 condition_variables 在线程之间切换

用于 cobol 显示和解压缩数字字段的 Java 映射

java - java的时间格式

java - 有没有办法将相同的 hibernate 实体映射到不同方案中的多个表

java - 使用 Java 向多个线程提供数据

Java:线程不会等待