【问题标题】:Running at most n Java threads最多运行 n 个 Java 线程
【发布时间】:2011-01-17 17:16:53
【问题描述】:

我有一个 CPU 密集型应用程序,可以用 Java 编写。该应用程序由几个独立运行的作业(线程)组成。

如果我一次启动所有线程,系统将过载。我怎样才能一次最多启动 n 个线程,当一个线程完成时,再启动一个新线程?通过限制一次运行的线程数,我打算让一些其他处理器/内核可用于其他任务。

谢谢

【问题讨论】:

    标签: java multithreading


    【解决方案1】:

    您应该将您的线程任务表述为Runnables 或Callables,然后将它们提交给固定的线程池执行器。执行器将管理一个工作线程池,并从这些线程的内部队列中运行您的任务。

    请参阅Executors#newFixedThreadPool 了解创建所需执行器类型的工厂方法。

    【讨论】:

      【解决方案2】:

      使用固定大小的执行器池。

       ExecutorService executor = Executors.newFixedThreadPool(4);
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2020-12-13
      • 2010-12-06
      相关资源
      最近更新 更多