• Java线程池


    Java线程池

    ​ Java线程池主要用于管理线程组和运行状态,以便JVM更好的利用CPU资源,线程池的主要作用就是县城服用、线程资源管理、控制操作系统的最大并发数,保证系统搞笑(通过线程资源复用实现)且安全(通过控制最大线程并发数实现) 地运行。

    线程复用

    ​ 线程复用就是在循环方法中不断获取Runnable对象放入Queue中,大哥前线程在获取下一个Runnable对象之前可以是堵塞的,这样既可以有效控制正在执行的线程个数,也能保证系统中正在等待执行的其他线程有序执行,这样就简单实现了一个县城之,达到了线程复用的效果。

    线程的核心组件和核心类

    ​ Java线程池由以下4个组件组成

    ​ 1.线程池管理:用于创建并管理线程池

    ​ 2.工作线程: 线程池中执行具体任务的线程

    ​ 3.任务接口: 用于定义工作线程的调度和执行策略,只有该线程实现了该接口,线程中的任务才能够被线程池调度。

    ​ 4.任务队列: 存放待处理的任务,新的任务将会不断被加入队列中,执行完任务将会被从队列中移除

    ​ Java中的线程池是通过Executor框架实现的,在该框架中用到了Executor、Executors、ExecutorService、ThreadPoolExecutor、Callable、Futrue、FutreTask这几个核心类,其中ThreadPoolExecutor是构造线程的核心方法。

    工作原理

    参数说明
    corePoolsize线程池中核心线程数量
    maximumPoolSize线程池最大的线程数量
    keepAliveTime当前线程超出corePoolSize的时候,空闲线程的存活时间
    unnitKeepAliveTime的时间单位
    workQueue任务队列,被提交但未被执行的任务存放的地方
    threadFactory线程工厂,用于线程创建,可使用默认的线程工厂活自定义线程工厂
    handler由于任务过多或其他原因导致线程池无法处理时的任务拒绝策略。

    ​ 线程刚被创建的时候,只是想系统申请一个用于执行线程队列和管理线程池的线程资源。在调用excute()添加一个任务的时候,

    ​ 首先会判断正在运行的线程数量少于corePoolSize,线程就会立刻创建线程并且执行该线程任务

    ​ 如果正在运行的线程数量大于等于corePoolSize,该任务就会放到堵塞队列里面,

    ​ 如果堵塞队列已经满了且正在运行的线程数量小于maxinumPoolSize的时候,线程池救护i创建非核心线程立刻执行该任务。

    ​ 如果堵塞对了已经满了且正在运行的线程数量大于等于maxinumPoolSize的时候,线程池会拒绝执行该线程任务并且抛出RejectExecutionException异常。

    ​ 在线程任务之习性完毕后,该任务讲被从线程池队列中移除,线程池将从队列中取下一个线程任务继续执行。

    ​ 在线程处于空闲状态超过KeepAliveTime时间的时候,正在运行的线程数量超出corePoolSize,那么该线程就会被认定为空闲线程,并且被停止。

    拒绝策略

    ​ 若线程池中的核心线程数已经被用完且堵塞队列也满了,则此时线程池的线程资源已耗尽,线程池没有足够的线程资源执行新的任务,为了保证操作系统的安全,线程池会通过拒绝策略来处理新添加的线程任务。

    AbortPolicy

    ​ AbortPolicy是直接抛出异常,阻止线程正常运行。

    CallerRunsPolicy

    ​ 如果丢弃的线程任务未关闭,则执行该线程的任务

    DiscardOlderPolicy

    ​ 移除线程队列中最早的一个线程任务,并且尝试提交任务

    DiscardPolicy

    ​ 丢弃当前线程而不做任何处理,如果系统允许在资源不足的情况丢弃部分任务,这将是保证系统安全、稳定一种很好的方案。

  • 相关阅读:
    【MySQL】数据库基础
    1 什么是Zookeeper 能干什么
    全面吃透JAVA Stream流操作,让代码更加的优雅
    《MySQL 数据库 (一)》
    iTOP-3568开发板Ubuntu下安装ADB工具
    7.4 反编译、篡改漏洞检测和重现
    基于yolov5的农作物田间杂草检测识别系统
    C++ 关键字
    C/C++入门001-概述环境搭建与案例
    小程序容器解决OA系统数字化升级难题?
  • 原文地址:https://blog.csdn.net/qq_40102411/article/details/125433384