0

およびに依存する JVM/Linux 上の実稼働システムがSystem.nanoTimeありSystem.currentTimeMillisます。私は以前、NTP がスルーを完全に台無しにする状況にあったため、クロックがリアルタイムよりもはるかに速くまたは遅く実行されていました (そして、スルーは前述の両方の Java メソッドに影響します)。

nanoTimeそれを監視し、currentTimeMillis正しい速度に近い速度で実行するにはどうすればよいですか? これらの方法でデルタを定期的に測定し、それらを同じ期間の「既知の」デルタと比較したいと思います。「既知の」デルタの信頼できる情報源は何ですか? C/C++ ソリューションは問題ありません。

4

1 に答える 1

0

特に VM では、信頼できる時間のソースは、マシンの外部にある必要があります。特殊なハードウェア (原子時計や GPS 受信機など) にアクセスできないと想定しているため、次の最善の策は NTP です。近くの NTP サーバーを見つけ、システム クロックを介して「前」の時刻を取得し、NTP を介して時刻を取得し、時計の「後」を読み取ります。「before」と「after」の平均値の差を NTP 値と比較します。差がゼロになるとは思わないでください (ネットワークの遅延は、両方向で同じではない可能性があります)。時間の経過とともに違いを監視します。私は変動がトレンドを下回っていると予想していますが、ある程度の確信を持ってトレンドが増加 (または減少) している場合は、クロックがめちゃくちゃになっている可能性があります。

于 2012-12-06T21:28:45.507 に答える