-
线程池构造器参数的含义
- coreSize:核心线程数
- maxSize:最大线程数
- KeepAliveTime:线程空闲的最大时间
- Queue:等待队列
- ThreadFactory
- RejectExecutionHandler:拒绝策略
- AbortPolicy:直接抛出异常<默认策略>
- CallerRunsPolicy:用调用者所在的线程来执行任务
- DiscardOldestPolicy:丢弃队列中最靠前的任务并执行当前任务
- DiscardPolicy:直接丢弃任务
当请求不断增加时,各个参数起的作用如下:
-
请求数< coreSize:创建新的线程来处理任务
-
coreSize<=请求数&&能够成功入队列:任务进入到队列中等待消费
-
队列已满&&请求数<maxSize:创建非核心线程来处理任务
-
队列已满&&请求数>=maxSize:使用RejectExecutionHandler类拒绝请求。
-
利用Executors创建不同的线程池来满足不同场景的需求?
- newFixedThreadPool(int nThread)指定工作线程数量的线程池
- newCachedThreadPool():处理大量段时间工作任务的线程池
- newSingleThreadExecutor():创建唯一的工作者线程来执行任务。
- newSingleThreadScheduledExecutor:定时或者周期性的工作调度
- newWorkStrealingPool():内部会构造ForkJoinPool,利用work-Strealing算法,并行地处理任务,不保证处理顺序。