クラスの最初にロードする静的変数があります。変数を1時間ごとに更新したい。問題は、これを行う適切な方法は何ですか?
私がやろうとしている方法は次のとおりですが、静的変数を更新するメソッドがすべてのコンストラクターにある必要があります。
import java.util.Date;
public class MyClass {
private static String globalString = "";
// initialize lastUpdate with two hours back to make sure first update happens
private static Date lastUpdate = new Date(System.currentTimeMillis() - (2 * (3600 * 1000)));
MyClass() {
updateGlobalString();
// DO MORE STUFF HERE...
}
MyClass(String string) {
updateGlobalString();
// DO MORE STUFF HERE...
}
private synchronized void updateGlobalString() {
// check if we need to update
if (lastUpdate.before(new Date(System.currentTimeMillis() - (3600 * 1000)))) {
// DO THINGS TO UPDATE globalString HERE...
lastUpdate = new Date();
}
}
}
他のアイデア/より良い方法はありますか?