线程池的分类
共有五种线程池,分别是
1.有缓冲的线程池,线程数 JVM 控制
Executors.newCachedThreadPool();
2.固定大小的线程池
Executors.newFixedThreadPool(3);
3.定时任务线程池
Executors.newScheduledThreadPool(2);
4.单线程的线程池 只有一个线程在工作
Executors.newSingleThreadExecutor();
5.工作窃取线程池 窃取其他线程任务队列中的任务来执行
Executors.newWorkStealingPool(processors);
1.无界线程池(可缓冲线程池)
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
没有最大线程数量控制,数量控制根据系统的资源来限制,当线程数量过多时,会等待资源释放后再执行,导致效率降低
2.单一线程
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
创建耽搁线程,相当于new Thread 核心线程数和最大线程数都是1
3.固定大小线程池
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
固定核心线程数和最大线程数大小的线程池,参数为线程数,核心线程数和最大线程数相同
4.定时任务线程池
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);
// 定时执行 schedule() 在项目启动5秒钟后执行一次
scheduledExecutorService.schedule(task, 5, TimeUnit.SECONDS);
// 定时执行 scheduleWithFixedDelay() 在项目启动5秒后 每5秒执行一次
scheduledExecutorService.scheduleWithFixedDelay(task, 5, 5, TimeUnit.SECONDS);
1 条评论
来了奥老弟