《Java并发编程实战》读书分享

308 阅读1分钟
  1. 分享章节:第八章:线程池使用
  2. 为什么要使用线程池?
  • 降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。
  • 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
  • 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控
  1. 使用线程池规范。
  • 禁止使用Executors工具类创建线程池。
  • 推荐使用TestThreadPoolExecutor自定义创建。
  1. ThreadPoolExecutor线程池类参数详解。
参数说明
corePoolSize核心线程数量,线程池维护线程的最少数量
maximumPoolSize线程池维护线程的最大数量
keepAliveTime线程池除核心线程外的其他线程的最长空闲时间,超过该时间的空闲线程会被销毁
unitkeepAliveTime的单位,TimeUnit中的几个静态属性:NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS
workQueue线程池所使用的任务缓冲队列
threadFactory线程工厂,用于创建线程,一般用默认的即可
handler线程池对拒绝任务的处理策略
  1. 创建线程池请指定有意义的线程名称。
    • 指定有意义的线程名称方便出错时回溯。
    • 三种指定线程池名称的方法,请见下图

image.png image.png image.png image.png image.png

image.png image.png