常见四种线程池
CachedThreadPool()可缓存线程池
1.线程数无限制
2.有空闲线程则复用空闲线程,若无空闲线程则新建线程
3.一定程序减少频繁创建/销毁线程,减少系统开销
ExecutorService cacheThreadPool = Executors.newCachedThreadPool();
FixedThreadPool()定长线程池
1.可控制线程最大并发数(同时执行的线程数)
2.超出的线程会在队列中等待
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(int nThreads);
ScheduledThreadPool()定长线程池
1.支持定时及周期性任务执行.
ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(int corePoolSize);
SingleThreadExecutor()单线程化的线程池
1.有且仅有一个工作线程执行任务
2.所有任务按照指定顺序执行,即遵循队列的入队出队规则
ExecutorService singleThreadPool = Executors.newSingleThreadPool();
CachedThreadPool()可缓存线程池
1.线程数无限制
2.有空闲线程则复用空闲线程,若无空闲线程则新建线程
3.一定程序减少频繁创建/销毁线程,减少系统开销
ExecutorService cacheThreadPool = Executors.newCachedThreadPool();
FixedThreadPool()定长线程池
1.可控制线程最大并发数(同时执行的线程数)
2.超出的线程会在队列中等待
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(int nThreads);
ScheduledThreadPool()定长线程池
1.支持定时及周期性任务执行.
ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(int corePoolSize);
SingleThreadExecutor()单线程化的线程池
1.有且仅有一个工作线程执行任务
2.所有任务按照指定顺序执行,即遵循队列的入队出队规则
ExecutorService singleThreadPool = Executors.newSingleThreadPool();