ThreadPoolExecutor线程池详解
七个参数:
- corePoolSize:核心池的大小,在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中;
- maximumPoolSize:线程池最大线程数;
- keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止;
- unit:参数keepAliveTime的时间单位(DAYS、HOURS、MINUTES、SECONDS 等);
-
workQueue:阻塞队列,用来存储等待执行的任务;
threadFactory:线程工厂,主要用来创建线程- ArrayBlockingQueue (有界队列)
- LinkedBlockingQueue (无界队列)
- SynchronousQueue
-
handler:拒绝处理任务的策略
- AbortPolicy:丢弃任务并抛出 RejectedExecutionException 异常。(默认这种)
- DiscardPolicy:也是丢弃任务,但是不抛出异常
- DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
- CallerRunsPolicy:由调用线程处理该任务