• 浅谈Quartz(SimpleTrigger&CronTrigger)


     private void quartzOrderReturn(List<String> returnIds) {
            try {
                Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
                JobDataMap jobDataMap = new JobDataMap();
                jobDataMap.put("returnIds", returnIds);
                //1. 创建一个JodDetail实例 将该实例与Hello job class绑定    (链式写法)
                JobDetail jobDetail = JobBuilder.newJob(QuartzOrderReturn.class)// 定义Job类为QuartzOrderReturn类,这是真正的执行逻辑所在
                        .withIdentity(StrUtils.uuid())
                        .setJobData(jobDataMap)
                        .build();
                // 2. 定义一个Trigger,定义该job在10秒后执行,并且执行一次
                Date startTime = new Date();
                startTime.setTime(startTime.getTime() + 10000L);
                SimpleTrigger trigger = TriggerBuilder.newTrigger()
                        .withIdentity(StrUtils.uuid(), HeaderNameConstants.getQuartzTrigger()).startNow()// 定义名字和组
                        .startAt(startTime)
                        .withSchedule(SimpleScheduleBuilder
                                .simpleSchedule()
                                .withIntervalInSeconds(2)//定义时间间隔是2秒
                                .withRepeatCount(0)//定义重复执行次数是无限次
                        )
                        .build();
                // 4. 将trigger和jobdetail加入这个调度
                scheduler.scheduleJob(jobDetail, trigger);
                // 5. 启动scheduler
                scheduler.start();
                // 6. 任务执行后20秒后休眠
                Thread.sleep(startTime.getTime() + 20000L);
                // 7. 如果定时任务开启则关闭
                if (scheduler.isStarted()) {
                    scheduler.shutdown(true);
                }
            } catch (SchedulerException | InterruptedException e) {
                e.printStackTrace();
            }
        }
    ublic static final Logger log = LoggerFactory.getLogger(Object.class);
    
        @Override
        public void execute(JobExecutionContext context) {
            try {
                log.info("执行定时任务开始");
                JobDetail detail = context.getJobDetail();
                List<String> returnIds = (List<String>) detail.getJobDataMap().get("returnIds");
                OrderService orderService = (OrderService) SpringBeanFactoryUtils.getBeanByClass(OrderService.class);
                for (String returnId : returnIds) {
                    orderService.refundPrice(returnId);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    详解Android Intent
    【JAVA EE企业级开发四步走完全攻略】
    撼动IT界的10大编程语言
    System.getProperty() 常用值
    Android List,Adapter相关
    为程序员量身定制的12个目标
    java 算法数据
    JAVA基础之理解JNI原理
    Java 工厂模式
    linux下C语言读取网卡MAC地址
  • 原文地址:https://www.cnblogs.com/EveningWind/p/10115797.html
Copyright © 2020-2023  润新知