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

http://commons.apache.org/proper/commons-configuration/を使用してみてください

簡単に使用できるように、すでに十分に単純化されていると思います。

于 2013-03-25T10:32:08.950 に答える
0

Timer/TimerTaskまたはより現代的なScheduledExecutorService/メソッドを使用して一定期間後に更新する以外Runnableに、リスナー (別名オブザーバー) パターンを使用して変更と更新の間の因果関係を確立する必要があります。投稿したようなコードに慣れている場合は、少なくともループThread.sleep()の最後で使用する必要があります。while

于 2013-03-25T09:19:15.863 に答える
0

最もクリーンなオプションの 1 つは、java.utl.concurrent の ScheduledExecutorService#scheduleAtFixedRate にあります。

ここにAPIドキュメントがあります

于 2013-03-25T09:20:04.663 に答える