什么是线程池?
池化概念 (可重复利用、减少系统资源占用、加快使用连接的过程)
为什么使用线程池?
降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;
提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;
提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控
提供更强大的功能,延时定时线程池。可以帮助我们执行一些延时任务或定时任务。
jdk1.8线程池结构图
Executor
一个接口,其定义了一个接收Runnable对象的方法executor,其方法签名为executor(Runnable command),
ExecutorService
是一个比Executor使用更广泛的子类接口,其提供了生命周期管理的方法,以及可跟踪一个或多个异步任务执行状况返回Future的方法
AbstractExecutorService
ExecutorService执行方法的默认实现
ForkJoinPool
将大任务分解成若干个小任务,当小任务均执行结束后,将任务做一个整合。
ThreadPoolExecutor
线程池,可以通过调用Executors以下静态工厂方法来创建线程池并返回一个ExecutorService对象。
ScheduledExecutorService
一个可定时调度任务的接口
ScheduledThreadPoolExecutor
ScheduledExecutorService的实现,一个可定时调度任务的线程池