如何创建一个后台线程,每15分钟从数据库获取数据?
下面是我已经拥有的代码,在生产环境中应该可以正常工作,但是否有更好的方式或者需要注意的事项呢?
private static void checkDatabaseEveryXMinutes() {
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(checkingAfterEveryXMinutes);
getDataFromDatabase();
} catch (InterruptedException ex) {
//log here
} catch (Exception e) {
//log here
}
}
}
}.start();
}
使用上述代码有什么缺点?ScheduledExecutorService和TimerTask有何区别?哪种方法更好?如果有更好的方法,请基于我的代码提供示例。
ScheduledExecutorService
,你只需简单地scheduleAtFixedRate
(或scheduleWithFixedDelay
),一切都会自动处理好。 - C. K. Young