Callable<> 接口
FutureTask是实现了runable的子接口的,而他的构造可以接收callable,这样new Thread就可以传这个callable了
线程池
线程池优势
线程池常用的几个方式
这个不是重点,知道即可,加上java8新出大多一共5种
带调度的-Executors.newScheduledThreadPool()
Executors.newScheduledThreadPool()
这是带调度的线程池例如我要每5秒执行一次
线程池
4种获得多线程的方法:
- 继承Thread类
- 实现Runable接口 但是这个无返回无异常
- 实现Callable接口 有返回可抛异常
- 获得和使用多线程方法 线程池方式
ead类
这三个最重要,最常用的3个线程池:
Executors.newFixedThreadPool(int) //固定线程数的线程池
简单理解:一池固定数线程
类似一个一行就5个业务办理窗口
Executors.newSingleThreadExecutor() //单的
一池一线程
Executors.newCachedThreadPool() //可扩容带缓存的
一池多线程
ThreadPoolExecutor很重要
线程池5大参数
ThreadPoolExecutor七大参数
第五个参数workQueue相当于银行的候客区
第六个线程工厂
第七个参数,拒绝策略,防止队列里任务过多 ---->4种拒绝策略
线程池拒绝策略
以下时几种拒绝策略
关于手写线程池的基本线程数设置
密集型两种方式