Обращение наносекунд в миллисекунд и наносекунд <999999 на Java
-
29-09-2019 - |
Вопрос
Мне интересно, какой самый точный способ преобразования ценности большой наносекунды состоит в миллисекундах и наносекундах, с верхним пределом наносекунды 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);