线程池的七大核心参数
- 核心线程数(corePoolSize):线程池中能够同时执行的线程数量。
- 最大线程数(maximumPoolSize):线程池中允许的最大线程数量。
- 线程空闲时间(keepAliveTime):当线程池中的线程数量超过核心线程数时,空闲线程在被回收之前等待新任务的最长时间。
- 时间单位(unit):线程空闲时间的单位,可以是秒、毫秒等。
- 任务队列(workQueue):用于存放还未被执行的任务的队列,一般使用阻塞队列实现。
- 线程工厂(threadFactory):用于创建新线程的工厂类,一般使用默认的ThreadFactory即可。
- 拒绝策略(handler):当线程池已满并且队列也已满时,对新任务的处理策略,可以是抛出异常、丢弃任务等。
阻塞队列
ArrayBlockingQueue 和 LinkedBlockingQueue 里面的put()和take()方法都是用 ReentrantLock 和 Condition来实现。
两者的区别:ArrayBlockingQueue没有设置最大容量,ReentrantLock有设置最大容量。