本文参考 https://www.w3cschool.cn/quartz_doc/quartz_doc-1xbu2clr.html
用quartz建立定时任务可以很方便的执行多任务,尤其可以在空闲时间执行任务,好了,直接来思路;
1、建立定时工作调度工厂:代码如下:
public class QuartzUtil
{
private static final String JOB_GROUP_NAME = "SJZ_JOB";
private static final String TRIGGER_GROUP_NAME = "SJZ_TRIGGER";
private static Logger log = LoggerFactory.getLogger(QuartzUtil.class);
public static void addJob(String jobName, String triggerName, Class<? extends Job> jobClass, int seconds)
throws SchedulerException
{
log.info("周期任务注册: " + jobName + ", 周期间隔: " + seconds);
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sche = sf.getScheduler();
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, "SJZ_JOB").build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(triggerName, "SJZ_TRIGGER")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(seconds).repeatForever())
.build();
sche.scheduleJob(jobDetail, trigger);
sche.start();
}
2、子线程实现Job
public class DemoJob
implements Job
{
private static Logger LOG = LoggerFactory.getLogger(DemoJob.class);
private String today = new SimpleDateFormat("yyyyMMdd").format(Long.valueOf(new Date().getTime()));
public void execute(JobExecutionContext context)
throws JobExecutionException
{
dobussiness();
}
}
3、任务调用
public class JobTrigger
{
private static Logger LOG = LoggerFactory.getLogger(JobTrigger.class);
public static void main(String[] args)
{
try
{
String time= “0 27 19 ? * *”
QuartzUtil.addFixJob("Demo", "Demo", DemoJob.class, "time" );
}
catch (SchedulerException e)
{
LOG.error("启动失败: " + e);
e.printStackTrace();
}
}
}