Điều này sẽ khá thẳng về phía trước, nhưng tôi thấy không có công việc nào được thực thi. Tôi có một điểm ngắt trên phương thức execute() của nhiệm vụ, không có luồng nào được đưa vào đó. Tôi không hiểu sai.Quartz không kích hoạt trình kích hoạt đơn giản
các Job
class Printer implements Job{
public Printer(){
System.out.println("created printer");
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("hi" + context.getFireTime());
}
}
Các lớp học chính
class MyClass {
public static void main(String[] args) throws Throwable {
Scheduler s = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = newJob(Printer.class).build();
CronTrigger trigger =
newTrigger()
.withIdentity("a", "t")
.withSchedule(cronSchedule("0/5 * * * * ?").inTimeZone(TimeZone.getDefault()))
.forJob(job).build();
s.scheduleJob(job, trigger);
// This prints the right date!
System.out.println(trigger.getNextFireTime());
s.start();
}
}
EDIT: Tôi phát hiện ra tôi không có tập tin quartz.property, vì vậy có khả năng threadpool cho thạch anh là chưa bao giờ được tạo. Vì vậy là đã đọc trong documentation, tôi thay thế các mã sử dụng StdSchedulerFactory như sau:
DirectSchedulerFactory.getInstance().createVolatileScheduler(10);
Scheduler s = DirectSchedulerFactory.getInstance().getScheduler();
Đoán những gì? Không may mắn. Hiệu ứng giống hệt nhau. Ứng dụng giữ ở lại còn sống, bắn không kích hoạt.
Chương trình của bạn không kết thúc? – Dariusz
Không vì tôi không tắt lịch trình (có mục đích). – sscarduzio
Bạn có thực sự xác nhận rằng ứng dụng của bạn không chỉ kết thúc ngay sau 's.start()'? – Dariusz