【JUC】如何合理配置 ThreadPoolExecutor 的核心线程数

受限于硬件、内存和性能,我们不可能无限制的创建任意数量的线程,每一台机器允许的最大线程是一个有界值。因此ThreadPoolExecutor管理的线程数量是有界的。线程池就是用这些有限个数的线程,去执行提交的任务。但是对于多用户、高并发的应用来说,提交的任务数量非常巨大,会比允许的最大线程数多很多。为了解决这个问题,必须要引入排队机制,或者是在内存中,或者是在硬盘等容量很大的存储介质中。Java的ThreadPoolExecutor只支持任务在内存中排队,通过BlockingQueue暂存还没有来得及执行的任务。

线程的管理是比较复杂的,这会涉及线程数量、等待/唤醒、同步/锁、线程创建和死亡等问题。

ThreadPoolExecutor中的这七大参数,共同负责着线程池中的线程的创建和销毁

  • int corePoolSize
  • int maximumPoolSize
  • long keepAliveTime
  • TimeUnit unit
  • BlockingQueue workQueue
  • ThreadFactory threadFactory
  • RejectedExecutionHandler handler

参考

1.java 线程常用工具类

2:线程的生命周期

3:多线程的理解

4:线程池的运行机制

5:线程池中变量的定义

6.corePoolSize和maxPoolSize的区别

7:线程池中的阻塞队列无限大是否合适

8:线程池的队列一般设置多少

9:线程池的实现,源码中常用的方法

10:线程池和线程的区别,线程池有哪些,什么情况下使用,业务场景

11:线程的状态,线程池的构造方式,常见线程池

发布了112 篇原创文章 · 获赞 46 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/AV_woaijava/article/details/105114349
今日推荐