线程池,使用Executors创建
CachedThreadPool
ExecutorService e = Executors.newCachedThreadPool()
底层:
ThreadPoolExecutor(
0,
Interger.MAX_VALUE,
60L,
TimeUnit.SECONDS,
new synchronousQueue<Runnable>()
)
FixedThreadPool
new的时候规定大小
ExecutorService e = Executors.newFixedThreadPool()
底层:
ThreadPoolExecutor(
arg1,
arg1,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingsQueue<Runnable>()
)
arg1是传入参数
LinkedBlockingQueue是无限大的
同步队列大小为0,也就是不存数据。
SingleThreadExecutor
大小只有1的FixedThreadPool
ExecutorService e = Executors.newSingleThreadExecutor()
其实都是ThreadPoolExcutor,只是传入参数不同
构造方法
ThreadPoolExecutor(
int corePoolSize, 核心池大小*
int maximumPoolSize, 总池子大小*
long keepAliveTime, 时间*
TimeUnit unit, 时间单位
BlockingQueue<Runnable> workQueue, 阻塞队列*
ThreadFactory threadFactory,生成线程的线程工厂
RejectExcutionHandler handler 当拒绝执行时的处理函数
)
加*的是重点