0

您好,我有一些配置要在可配置的时间跨度后刷新。这样做或遵循的最佳方法是什么就足够了?

@Override
    public void run()
    {
        try
        {
            while(true){
                if (isRefreshNeeded) {
                    refresh()
                }
            }
        }
        catch( Exception excep )
        {
            // Log and report exception 
        }
    }
4

5 回答 5

1

我建议使用 Timer 类,这就是它的用途。

使用您的代码不是一个好主意,因为它会一直迭代,从而消耗 CPU 周期。

于 2013-03-25T09:10:56.947 回答
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);
于 2013-03-25T09:20:44.657 回答
0

Timer除了使用/TimerTask或更现代的ScheduledExecutorService/方法在一段时间后刷新之外Runnable,您也许应该使用侦听器(又名观察者)模式在更改和刷新之间建立因果关系。如果您对发布的代码更满意,则至少应该在循环Thread.sleep()结束时使用。while

于 2013-03-25T09:19:15.863 回答
0

java.utl.concurrent 的 ScheduledExecutorService#scheduleAtFixedRate 中存在最干净的选项之一

是API文档

于 2013-03-25T09:20:04.663 回答
0

尝试使用http://commons.apache.org/proper/commons-configuration/

我相信它已经足够简化,可以轻松使用。

于 2013-03-25T10:32:08.950 回答