定时任务进程调度处理


    
    正文:关于定时任务进程调度处理源码及过程分享>>

    1.核心调度器使用的是quartz框架,其中指定MethodInvokingJobDetailFactoryBean调用timerTrigger4DM这个bean中的trigger方法(该方法为线程调度入口)

     注意:使用框架搭建调度器一般都要进行定时器的注册(shell脚本命令方式不在此范围之内),注册内容包括2块:
     <1>任务的详细信息:即指定要执行的任务(id标识与匹配)。
     <2>定时执行的时间:即什么时候执行,cron表达式详细信息可在网上进行参考,本文结尾也有给出。


     2.通常将需要通过执行调度任务分配到不同的线程机制实体类中,以javabean实例的方式进行服务名value设置,放入triggerNameList属性中,通过Lombok类库中的@data注解获取。通过定时触发调度入口挨个获取调度服务名,发起线程池初始化并将任务存放至线程池执行该任务。


     3.通过服务名获取服务中匹配对应的Bean实例对象,具体为何这么做请自行研究。


     这里存在一个问题:当两个线程同时调用put(thread)方法判断threadExecutor4JDK==null,这个时候2个线程都会去调用initThreadExecutor(),从而触发threadExecutor4JDK = new ThreadExecutor4JDK()导致有可能同时创建多个线程池。


lombok 类库注解:
@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法


一个cronExpression表达式有至少6个或7个由空格分隔的时间元素,从左至右元素定义:
1.秒(0–59)
2.分钟(0–59)
3.小时(0–23)
4.月份中的日期(1–31)
5.月份(1–12或JAN–DEC)
6.星期中的日期(1–7或SUN–SAT)
7.年份(1970–2099)
例如:
0/30 * * * * ? 每隔30秒
0 0,15,30,45 * 1-10 * ?每月前10天每隔15分钟



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值