我的要求是我想安排一天应该运行一次的任务。为此我使用以下代码:
public class setAutoReminder {
EscalationDAO escalationDAO=new EscalationDAO();
final SendMail sendMail=new SendMail();
public void fetch(){
Date date=new Date();
Timer timer = new Timer();
timer.schedule(new TimerTask(){
public void run(){
int number=escalationDAO.getAutoReminder();
System.out.println(number);
if(number>0) {
sendMail.sendMail();
}
}
},date, 1000000000);
}
}
但这段代码多次运行。我希望它每天运行一次。我该怎么办?
答案 0 :(得分:4)
如果您没有多个预定作业,请不要添加所有弹簧行李。 保持简单。
Date date=new Date();
Timer timer = new Timer();
timer.schedule(new TimerTask(){
public void run(){
System.out.println("Im Running..."+new Date());
}
},date, 24*60*60*1000);//24*60*60*1000 add 24 hours delay between job executions.
这将做的事情。
-Siva
答案 1 :(得分:3)
使用Spring(使用lombok @Slf4j
):
@Slf4j
@Component
public class SetAutoReminder
{
@Autowired
private EscalationDAO escalationDAO;
@Autowired
private SendMail sendMail;
@Scheduled(cron = "0 0 0 * * *") // everyday at midnight
public void fetch(){
final int number = escalationDAO.getAutoReminder();
log.debug("Today number: {}", number);
if (number>0) {
sendMail.sendMail();
}
}
}
春季安排教程:springsource blog
答案 2 :(得分:0)
您需要一个调度程序,例如Quartz Scheduler