程序员社区

(Java并发面试题)如何合理的设置线程池

配置线程池可以从以下几个方面考虑。

  • 任务是cpu密集型、IO密集型或者混合型
  • 任务优先级,高中低。
  • 任务时间执行长短。
  • 任务依赖性:是否依赖其他系统资源。

cpu密集型可以配置可能小的线程,比如 n + 1个线程。

io密集型可以配置较多的线程,如 2n个线程。

混合型可以拆成io密集型任务和cpu密集型任务,

如果两个任务执行时间相差大,否->分解后执行吞吐量将高于串行执行吞吐量。

否->没必要分解。

可以通过Runtime.getRuntime().availableProcessors()来获取cpu个数。

建议使用有界队列,增加系统的预警能力和稳定性。配置线程池可以从以下几个方面考虑。

  • 任务是cpu密集型、IO密集型或者混合型
  • 任务优先级,高中低。
  • 任务时间执行长短。
  • 任务依赖性:是否依赖其他系统资源。

cpu密集型可以配置可能小的线程,比如 n + 1个线程。

io密集型可以配置较多的线程,如 2n个线程。

混合型可以拆成io密集型任务和cpu密集型任务,

如果两个任务执行时间相差大,否->分解后执行吞吐量将高于串行执行吞吐量。

否->没必要分解。

可以通过Runtime.getRuntime().availableProcessors()来获取cpu个数。

建议使用有界队列,增加系统的预警能力和稳定性。

Java面试题

赞(0) 打赏
未经允许不得转载:IDEA激活码 » (Java并发面试题)如何合理的设置线程池

一个分享Java & Python知识的社区