我的问题是我有一个使用类Gestion
的RESTful Web服务。
在这个课程中,我有一个函数_update_
,我想在00:00每天调用这个函数。
我不知道该怎么做,所以我查看了Web,我发现使用线程可能是一个不错的选择。但是,我不知道如何使用它。我是否必须将_update_
函数移动到新类中?
答案 0 :(得分:1)
如果您使用的是EJB ,则可以使用计时器服务
@Singleton
public class TimerService {
@Inject
HelloService helloService;
@Schedule(second="0", minute="0", hour="0")
public void update(){
System.out.println("timer: " + helloService.sayHello());
}
}
https://docs.oracle.com/javaee/7/tutorial/ejb-basicexamples004.htm
答案 1 :(得分:1)
使用任何开源作业或调度程序更多详细信息。 http://toppersworld.com/top-10-open-source-java-job-schedulers/ 或者做纯编码。这个链接可以帮到你。 Get milliseconds until midnight。在一个线程中睡到午夜,醒来做任务再去睡觉。
@Override
public void run() {
while (true) {
try {
Thread.sleep(calculateSleepingTime());
// do what ever you want
} catch (Exception e) {
e.printStackTrace();
}
}
}
private long calculateSleepingTime() throws ParseException {
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTimeInMillis()-System.currentTimeMillis());
}