1.什么是线程池?
java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池
一个线程池包括以下四个基本组成部分:
1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;
2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;
3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;
4、任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。
2.为什么要创建线程池?
(1)减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。
(2)可以根据系统的承受能力,调整线程池中工作线程的数目,防止因为消耗过多的内存,而把服务器宕机(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。
3.创建线程池的方式
-
newCachedThreadPool
创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,