use*_*880 8 java quartz-scheduler
我在下面编写代码,我正在运行两个工作.首先是10秒的间隔,另一个是3秒的间隔.但最终在某些时候它们会同时执行.有没有机制来避免这种情况
JobDetail jDetail = new JobDetail("Job1", "group1", MyJob.class);
CronTrigger crTrigger = new CronTrigger("cronTrigger", "group1", "0/10 * * * * ?");
sche.scheduleJob(jDetail, crTrigger);
jDetail = new JobDetail("Job2","group2",MyJob2.class);
crTrigger = new CronTrigger("cronTrigger2","group2","0/3 * * * * ?");
sche.scheduleJob(jDetail, crTrigger);
Run Code Online (Sandbox Code Playgroud)
您可以创建一个辅助对象来使两个作业同步:
//In the base class
public static Object lock = new Object();
//In the first class
public void execute() {
synchronized(lock) {
//do stuff
}
}
//In the second class
public void execute() {
synchronized(lock) {
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
有关同步的更多信息,请访问: http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html