xxl-job基础组件核心类:JobTriggerPoolHelper(一行一行代码解读)

2023-02-01 17:13:29 浏览数 (1)

目录

  • 1 学习这个类你首先需要的知识
    • 1.1 volatile关键字原理
  • 2 JobScheduleHelper类主要职能
  • 3 JobTriggerPoolHelper类主要职能
    • 3.1 为什么要创建快慢两个线程池
    • 3.2 哪些情况下会进入慢线程池
    • 3.3 代码解读

1 学习这个类你首先需要的知识

1.1 volatile关键字原理

代码语言:javascript复制
被volatile关键字修饰的变量,编译器与运行时都会注意
到这个变量是共享的,因此不会将该变量上的操作与
其他内存操作一起重排序。volatile变量不会被缓存在
寄存器或者对其他处理器不可见的地方,


因此在读取volatile类型的变量时总会返回最新写入的值。

2 JobScheduleHelper类主要职能

代码语言:javascript复制
任务投递  和     下次执行时间维护

3 JobTriggerPoolHelper类主要职能

代码语言:javascript复制
线程池异步触发任务

3.1 为什么要创建快慢两个线程池

线程池隔离–快慢分离 目的:部分慢执行的线程,会拖慢整个线程池,因此我们需要将快慢分离。 需要区分出哪些是慢线程,这里给一个依据是一分钟内的慢执行(耗时大于500ms)次数为10次

3.2 哪些情况下会进入慢线程池

  • 1.任务执行频率高每分钟执行次数要大于10次以上(jobTimeoutCountMap,存放每个任务的执行慢次数,60秒后自动清空该容器)
  • 2.job Client端执行任务耗时较长,形成堆积 或者 网络延迟卡顿严重
  • 3.数据库相关查询出现耗时严重,遇到cpu100%或者拿不到连接等瓶颈问题

3.3 代码解读

添加触发任务到线程池中:核心方法,快慢线程池执行逻辑一样(不同点是队列的容量大小)

0 人点赞