一般来说,线程的生命周期需要通过 new(新建)->start(就绪)->running(运行中)->dead(消亡)
假设每个状态到下一个状态需要的时间是
1,2,3 秒
但是我们往往只是关心running 那个状态就可以了,这是线程需要执行的任务
使用线程池,创建一定数量的线程,专门执行任务的run 方法,实现了线程的复用,同时也减少了其他状态的占比,提高了整个系统的运行效率
核心线程,最大线程,定义不好解释,还是看这两个参数在执行任务的过程中对worker 线程的创建的影响吧。
这两个参数的目的是:
FixedExcutor:固定线程池大小
SingleThreadPool:单线程,
CachedThreadPool:可缓存
Executors.newCachedThreadPool();
Executors.newSingleThreadExecutor();//单线程线程池
Executors.newFixedThreadPool(2);//固定线程池大小
核心构造方法:
ThreadPoolExecutor(int corePoolSize,// 核心线程数
int maximumPoolSize,// 最大线程数
long keepAliveTime,// 线程闲闲置存活时间,如果闲置时间超过改时间,则回收该线程(长时间没任务)
TimeUnit unit,// 时间单位
BlockingQueue<Runnable> workQueue)//任务队列