线程相关内容总结
ThreadPoolExecutor线程池的参数
1)corePoolSize
代表核心线程数。每当新的任务提交过来的时候,线程池就会创建一个核心线程来执行这个任务,即使已经有其他的核心线程处于空闲状态。
而当需要执行的任务数大于核心线程数时,将不再创建新的核心线程。
2)maximumPoolSize
代表线程所允许的最大数量。即,当阻塞队列已满的时候,并且已经创建的线程数小于最大线程数,则会创建新的线程去执行任务。
3)keepAliveTime
代表线程空闲后,保持存活的时间,当allowCoreThreadTimeOut = true时,超过一定的时间没有任务执行,线程就会自动销毁。
4)unit
代表描述存活时间的时间单位。
5)workQueue
代表阻塞队列,存储所有等待执行的任务。
6)threadFactory
代表用来创建线程的工厂。可以自定义一个工厂,传参进来。如果不指定的话,就会使用默认工厂(Executors类里边的 DefaultThreadFactory)。
7)handler
代表拒绝策略,当阻塞队列和线程池都达到了最大线程数,使用的处理策略。
一共有四种策略可供选择,分别对应四个内部类:
-
AbortPolicy:直接拒绝,并抛出异常,这也是默认的策略。
-
CallerRunsPolicy:直接让调用execute方法的线程去执行此任务。
-
DiscardOldestPolicy:丢弃最老的未处理的任务,然后