线程池:
线程执行任务后,不被销毁,再次执行其他任务。
核心类:ThreadPoolExecutor
corePoolSize:大小
maximumPoolSize:最大线程数
keepAliveTime:没执行任务存活时间
unit:时间单位
workQueue:阻塞队列
threadFactory:线程工厂
handler:当拒绝处理任务时的策略(
ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务
)
ThreadPoolExecutor(int corePoolSize, //初始化创建线程数量
int maximumPoolSize, //线程可创建最大数量,任务数量超过corePoolSize值,先将任务放到队列中,队列满了或者异常,创建线程<maximumPoolSize,超过maximumPoolSize,handler处理
long keepAliveTime, //线程存在时间,超出corePoolSize线程数会激活
TimeUnit unit, //时间单位
BlockingQueue<Runnable> workQueue, //存入的任务队列(LinkedBlockQueue、Synchronous)
ThreadFactory threadFactory, //产生线程的工厂
RejectedExecutionHandler handler) //拒绝处理任务时对应策略
该类(ThreadPoolExecutor)继承抽象类:AbstractPoolExecutor,实现接口:ExecutorService 继承接口 Executor
涉及核心方法:
execute:提交任务到线程池
submit:提交任务到线程池,并返回执行结果Future。
shutdown:关闭线程池,若有任务,等待缓存队列执行完后关闭
shutdownNow:立即关闭,尝试关闭正在执行的任务
声明线程池:由ThreadPoolExecutor实现
Executors.newCachedThreadPool(); //创建一个缓冲池,缓冲池容量大小为Integer.MAX_VALUE
Executors.newSingleThreadExecutor(); //创建容量为1的缓冲池
Executors.newFixedThreadPool(int); //创建固定容量大小的缓冲池