六、任务执行
Executor框架
1)线程池
-
newSingleThreadExecutor 一个线程
-
newFixedThreadPool 固定大小线程池
-
newCachedThreadPool 缓冲线程池
-
newScheduledThreadPool 延迟或定时线程池
2)Executor生命周期
ExecutorService继承了Executor,扩展了其生命周期的管理方法。其生命周期状态:运行、关闭、已终止
3)Callable与Future
实现了线程池可返回执行结果,并可取消中断。
七、取消与关闭
任务取消:用户取消、时间限制、程序取消、错误、关闭。
interrupt是请求中断,传递一个中断信息,并不是中断线程。还需要响应中断才可以。
中断是实现任务取消的最合理方式,不可中断的任务在退出前可恢复中断。
八、线程池的使用
构造函数:
public
ThreadPoolExecutor(
int
corePoolSize,
int
maximumPoolSize,
long
keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler);
-
corePoolSize:核心线程数,①中用到
-
maximumPoolSize:最大线程数,③中用到
-
keepAliveTime & unit:存活时间,在⑥中创建的为非核心线程,在 阻塞队列 workQueue上 take时,设置该时间,等中断后回收该线程。
-
workQueue:工作队列,②中用到
-
threadFactory:线程工厂,⑤⑥用到
-
handler:拒绝处理策略,④中用到