[问题]我的服务有多个示例,并且在微服务系统中运行。在服务中,我使用Timer示例在将来运行任务
public class CustomizedTimerTask extends TimerTask {
private String message;
private String sender;
private String reciver;
@Override
public void run() {
// todo somthing
}
}
@Service
public MyTimerService {
public void initAfterStartOn() {
// get all task that have due date greater than now
// for_each and call newTask() function
}
public void newTask() {
Date startedAt = new Date(new Date().getTime() + ((long)5 * 60 * 60);
CustomizedTimerTask timerTask = new CustomizedTimerTask();
timerTask.setSender("sender");
timerTask.setRevicer("receiver");
timerTask.setMessage("Hi, nice to meet you");
timer.schedule(new CustomizedTimerTask(), new Date(startedAt));
// save CustomizedTimerTask to Database
}
}
如果我只运行一个示例,一切都会好的。但是如果我有多个示例,其中一个关闭并稍后运行。它将运行initAfterStartOn()
,这会导致任务重复。有人能给予我建议吗?
目前,我还没有找到任何解决办法。
1条答案
按热度按时间6kkfgxo01#
您可以尝试使用@Scheduled注解