创建线程池的两种方式
public static void main(String[] args) {
/**
* 通过 Executors提供的静态方法创建线程池
*/
ExecutorService executorPool;
//创建单一线程的线程池
executorPool = Executors.newSingleThreadExecutor();
//创建固定核心数的线程池
int corepoolSize = 5;
executorPool = Executors.newFixedThreadPool(corepoolSize);
//可缓存线程池
executorPool = Executors.newCachedThreadPool();
//大小无限制的线程池,支持定时和周期性的执行线程
executorPool = Executors.newWorkStealingPool();
//线程池执行任务
executorPool.execute(() -> {
System.out.println("线程执行中");
});
//关闭线程池
executorPool.shutdown();
/**
* 通过ThreadPoolExecutor构造函数,创建自定义的线程池
* @Param 核心线程数,最大线程数,线程存活时间,时间单位,工作队列
*/
//核心线程数
int corePoolSize = 5;
//最大线程数
int maximumPoolSize = 10;
//超过最大线程数后,其余线程数的存活时间
long keepAliveTime = 2;
//以秒为时间单位
TimeUnit unit = TimeUnit.SECONDS;
//工作队列,存放等待执行的任务
BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(2);
//创建线程池
ThreadPoolExecutor threadPoolExecu