31

大きなナノ秒の値をミリ秒とナノ秒に変換する最も正確な方法は、ナノ秒の上限が 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) {

        }
    }
}

乾杯、クリス

4

4 に答える 4

98

ショーンが上で書いたものと同等の、を使用したさらに短い変換java.util.concurrent.TimeUnitには、次を使用できます。

    long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);
于 2014-11-24T15:17:59.963 に答える
29

1000000 で divmod を取るだけです。

于 2010-11-29T03:38:33.357 に答える