ThreadPoolExecutor
使用
构造函数
ThreadPoolExecutor(
int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
corePoolSize 核心线程池大小
maximumPoolSize 最大线程池大小
keepAliveTime 当线程池大小大于corePoolSize时空闲线程最大的等待时间
workQueue 任务队列,是实现各种特性的线程池的关键
threadFactory 线程工厂类
RejectedExecutionHandler 当任务量超过线程池的处理能力时(任务队列满)的拒绝任务的策略
核心方法
提交任务
public void execute(Runnable command)
ASP站长网关闭线程池,等待任务队列中所有的任务执行完成,不能往线程池中添加新的任务,否则执行RejectedExecutionHandler
public void shutdown()
尝试停止正在执行的任务(调用interrupt方法,是否停止取决于线程是否响应该方法),并将等待执行的任务装入List返回给调用者
public List<Runnable> shutdownNow()
当前线程阻塞,直到
等所有已提交的任务(包括正在跑的和队列中等待的)执行完
或者等超时时间到
或者线程被中断,抛出InterruptedException
public boolean awaitTermination(long timeout,
TimeUnit unit)
throws InterruptedException
从任务队列中移除相应的任务,在该任务没有被执行的情况下
public boolean remove(Runnable task)
以下两个方法需要通过继承ThreadPoolExecutor来实现
protected void beforeExecute(Thread t,
Runnable r)
protected void afterExecute(Runnable r,
Throwable t)

