Обращение наносекунд в миллисекунд и наносекунд <999999 на Java

StackOverflow https://stackoverflow.com/questions/4300653

Вопрос

Мне интересно, какой самый точный способ преобразования ценности большой наносекунды состоит в миллисекундах и наносекундах, с верхним пределом наносекунды 9999999. Цель состоит в том, чтобы сочетать значения наносекунды и миллисекунды, чтобы обеспечить максимальное разрешение возможным с ограничением дано. Это для сопоставимости с методами сна / ждать и какой-либо другой внешней библиотекой, которая выдает большие наносекундные значения.

Редактировать: Мой код выглядит следующим образом:

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) {

        }
    }
}

Ура, Крис

Это было полезно?

Решение

Просто возьмите его с двумя на 1000000.

Другие советы

Почему бы не использовать встроенные методы Java. TimeUnit является частью параллельного пакета, так что созданный именно для вас нуждается

  long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);

Для постоянно короткого преобразования, используя java.util.concurrent.TimeUnit, эквивалентно тому, что написал выше Шон, вы можете использовать:

    long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top