可以在 java.util.concurrent
中找到管理线程池的顶级接口 Executors
import java.util.concurrent.*;
Executors
接口定义了一个 execute()
方法,接收一个实例化的Runnable
对象,来启动这个任务,不过常用的还是 ExecutorService
类
ExecutorService
类继承自 Executors
,但是提供相当方便的一些方法,可以通过下面的代码来创建不同规模,不同特性的线程池,返回值是ExecutorService
对象
创建不同规模/特性的线程池
/*
构造输入 :无
返回值 : 一个ExecutorService对象
特性 : 创建灵活的线程池,如果线程池过大,会自动调整,回收一些线程
*/
Executors.newCachedThreadPool();
/*
构造输入 :int,线程池最大并发数量
返回值 : 一个ExecutorService对象
特性 : 创建固定尺寸的线程池,限制最大并发的线程数目,超出指定数目的线程会在队列中等待直到有空位
*/
Executors.newFixedThreadPool(int);
/*
构造输入 :无
返回值 : 一个ExecutorService对象
特性 : 创建单个线程的线程池,只会执行一个线程,按照先进先出执行
*/
Executors.newSingleThreadExecutor();
常见方法:
/*
submit 方法接收一个实例化的Thread或者Runnable对象,将接收对象添加进线程池
*/
submit()
/*
表示之后不再有新的线程加入了
*/
shutdo