线程池的分类

共有五种线程池,分别是
    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);

最后修改:2024 年 02 月 27 日
如果觉得我的文章对你有用,请随意赞赏