大きなナノ秒の値を変換する最も正確な方法は、999999のナノ秒の上限で、ミリ秒とナノ秒です。目標は、ナノ秒とミリ秒の値を組み合わせて、制限で可能な最大解像度を確保することです与えられた。これは、スリープ/待機メソッドおよび大きなナノ秒値を提供する他の外部ライブラリとの比較可能性のためです。
編集:私のコードは次のようになりました:
while (hasNS3Events()) {
long delayNS = getNS3EventTSDelay();
long delayMS = 0;
if (delayNS <= 0) runOneNS3Event();
else {
try {
if (delayNS > 999999) {
delayMS = delayNS / 1000000;
delayNS = delayNS % 1000000;
}
EVTLOCK.wait(delayMS, (int)delayNS);
} catch (InterruptedException e) {
}
}
}
乾杯、クリス
それのdivmodを1000000で取得します。
組み込みのJavaメソッドを使用しない理由
long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);
Java.util.concurrent.TimeUnit
を使用して、Shawnが上記に書いたものと同等の、さらに短い変換のために、以下を使用できます。
long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);