• Java线程池中的基础问题


    谈谈线程池的理解。

    答:线程池是一种池化技术,将线程存放在线程池中并处于等待状态,当出现任务需要执行时,则调用线程池中的线程执行任务,线程不足时会让任务等待,或者创建新的线程。当任务结束时,大于核心线程的线程数将会在超过KeepAlive时间后回收。

    线程池的核心参数。

    答:核心线程数(CorePoolSize),最大线程数(maximumPoolSize),非核心线程的存活时间(KeepAliveTime),时间单位(TimeUnit),阻塞队列(BlockingQueue),拒绝策略(RejectExecutionHandler),线程工厂(ThreadFactory)


    线程池运行过程。

    提交任务,分配空闲线程

    若不存在空闲线程 则判断存活线程是否小于核心线程

    若小于核心线程 则创建一个线程并分配 若不小于则线程已满,判断工作队列

    若工作队列不满 则放入工作队列中排队并等待调用,若满则判断当前线程是否到达最大线程

    若未到达最大线程 则创建新非核心线程 若到达则采用拒绝策略


    常见线程池有哪些以及使用场景?

    FixedThreadPool(线程数固定的线程池)

    即适用执行长期的任务。

    CachedThreadPool(线程数根据需要动态变换的线程池)

    用于并发执行大量短期的小任务。

    SingleThreadExecutor(仅允许单线程的线程池)

    适用于串行执行任务的场景,将任务按顺序执行。

    ScheduledThreadPool(可以定时周期性执行任务的线程池)

    周期性执行任务,并且需要限制线程数量的需求场景。


    为什么要使用线程池?

    1、提高效率 创建好一定数量的线程放在池中,等需要使用的时候就从池中拿一个,这要比需要的时候创建一个线程对象要快的多。
    2、方便管理 可以编写线程池管理代码对池中的线程同一进行管理。

  • 相关阅读:
    单向的2.4G频段RF射频芯片-SI24R2E
    GPT系列论文解读:GPT-1
    【无标题】
    Go的接口,闭包,异常捕获
    前端 TS 快速入门之六:枚举 enum
    基于遗传算法与神经网络的测井预测(Matlab代码实现)
    【刷题之路 | Java & Python】两数之和(暴力枚举&哈希表)
    java计算机毕业设计课题申报系统MyBatis+系统+LW文档+源码+调试部署
    Linux服务器清理磁盘
    element UI表格控制列行合并
  • 原文地址:https://blog.csdn.net/m0_66605858/article/details/126839273