目录
- 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 代码解读
添加触发任务到线程池中:核心方法,快慢线程池执行逻辑一样(不同点是队列的容量大小)