java - 如何在执行程序服务中使用数据排队

标签 java multithreading

我正在学习Executor服务,并试图了解如何与线程池中的线程共享数据列表。我的可运行方法需要从列表中读取数据并进行处理。

   Runnable runnable = () -> {
      System.out.println("Inside : " + Thread.currentThread().getName());
      process(list.take());
    };
  ExecutorService executor = Executors.newFixedThreadPool(threadCount);
  executorService.submit(runnable);
池中的所有线程应只处理列表中的不同元素一次

最佳答案

您可以遍历列表的每个元素,然后将它们提交给执行者:list.forEach(e -> executor.submit(() -> process(e)));

关于java - 如何在执行程序服务中使用数据排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62770787/

相关文章:

java - 将线程本地内存刷新到全局内存是什么意思?

multithreading - 进程与线程的简单解释

java - JFace TreeViewer 在展开/折叠时保存树节点的状态

Java如何在actionListener中使变量全局

java - 将标准输入中的多个 JPG 合并为多文件 TIFF

c# - 为什么 GetThreadTimes 返回

multithreading - grails sessionFactory.currentSession.flushMode无法与线程一起使用?

java - Java 系统属性是如何从主机派生的?

java - 使用 GAE 在应用程序内处理子域

c# - Web.UI 的 InvokeRequired 需要帮助