2024年java并发基础教程

java并发基础教程JUC 并发编程 线程池 一 线程池的介绍 二 线程池的创建方式 1 通过 Executors 工厂类创建 2 通过 ThreadPoolEx 构造函数创建 三 线程池的工作流程 四 线程池的四种拒绝策略 五 最大线程数如何 java 并发基础教程设置 六 注意事项 一 线程池的介绍 线程池的组成 Java 中的线程池主要由 java util concurrent

大家好,我是讯享网,很高兴认识大家。



JUC并发编程_线程池

    • 一、线程池的介绍
    • 二、线程池的创建方式
      • 1、通过 Executors 工厂类创建
      • 2、通过ThreadPoolExecutor构造函数创建
    • 三、线程池的工作流程
    • 四、线程池的四种拒绝策略
    • 五、最大线程数如何java并发基础教程设置
    • 六、注意事项

一、线程池的介绍

线程池的组成:
Java中的线程池主要由 java.util.concurrent 包下的Executor、ExecutorService、ThreadPoolExecutor等接口和类提供支持。其中,ThreadPoolExecutor是线程池的核心实现类。

:线程池的顶级接口,定义了execute(Runnable command)方法,用于提交任务。
:Executor的子接口,增加了管理线程池生命周期和任务执行的方法,如submit(Callable/Void)、shutdown()、shutdownNow()等。
:ExecutorService 的默认实现,提供了丰富的配置选项,如核心线程数、最大线程数、工作队列类型、线程存活时间等。

线程池的好处:
1、降低资源消耗(线程复用)
2、提高响应速度
3、方便管理(控制最大并发数)

二、线程池的创建方式

1、通过 Executors 工厂类创建

不推荐使用 Executors 创建线程池,它们的阻塞队列长度都是 ,可能会堆积大量请求,从而导致 OOM

:创建一个固定大小的线程池,适用于控制最大并发数的场景

 
讯享网 

:创建一个单线程的线程池,保证所有任务按照指定顺序执行。
:创建一个可缓存的线程池,适用于执行大量短期异步任务的场景。
:创建一个定时线程池,用于定时及周期性任务执行。

2、通过ThreadPoolExecutor构造函数创建

使用 的构造函数可以更加灵活地配置线程池,如指定核心线程数、最大线程数、线程存活时间、工作队列等参数。

讯享网
 

三、线程池的工作流程

当有新任务提交时,线程池会检查是否有空闲的线程。
如果有空闲线程,则直接将任务分配给该线程执行。
如果没有空闲线程,则检查当前线程数是否达到了核心线程数。
如果未达到核心线程数,则创建新的线程来执行任务。
如果已达到核心线程数,则将任务加入到任务队列中等待执行。
如果任务队列已满,且当前线程数小于最大线程数,则创建新的线程来处理任务。
如果当前线程数等于最大线程数,且任务队列已满,则根据拒绝策略处理无法执行的任务。

四、线程池的四种拒绝策略

当任务队列已满,且无法创建新的线程来执行任务时,线程池会根据配置的拒绝策略来处理这些任务。常见的拒绝策略包括:

:抛出 RejectedExecutionException 异常,默认策略。
:由调用线程直接执行任务。
:丢弃任务,不抛出异常。
:丢弃队列中等待最久的任务,然后执行当前任务。

讯享网

五、最大线程数如何设置


                    
小讯
上一篇 2025-01-02 18:14
下一篇 2024-12-27 11:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5760.html