您好我有一些配置可在可配置的时间跨度后刷新。这样做或以下的最佳方式是什么?
@Override
public void run()
{
try
{
while(true){
if (isRefreshNeeded) {
refresh()
}
}
}
catch( Exception excep )
{
// Log and report exception
}
}
答案 0 :(得分:1)
我建议使用Timer类,这就是它的用途。
使用您的代码不是一个好主意,因为它会一直在迭代,从而消耗CPU周期。
答案 1 :(得分:1)
尝试使用Timer类:
long initialDelay = 100; // In millis
long delay = 1000; // In millis
Timer timer = new Timer("Refresher thread");
timer.schedule(new TimerTask() {
@Override
public void run() {
// code to refresh the configurations
}
}, initialDelay, delay);
答案 2 :(得分:0)
除了使用Timer
/ TimerTask
或更现代的ScheduledExecutorService
/ Runnable
方法在一段时间后刷新,您或许应该在更改和刷新之间建立因果关系使用Listener(aka Observer)模式。
如果您对发布的代码更为满意,则至少应在Thread.sleep()
循环结束时使用while
。
答案 3 :(得分:0)
java.util.concurrent中存在最干净的选项之一ScheduledExecutorService#scheduleAtFixedRate
Here是API文档
答案 4 :(得分:0)
尝试使用http://commons.apache.org/proper/commons-configuration/
我相信它已经足够简化,可以轻松使用。