tiempos - Conversión de nanosegundos en milisegundos y nanosegundos<999999 en Java
milisegundos en java (3)
Me pregunto cuál es la forma más precisa de convertir un gran valor de nanosegundos en milisegundos y nanosegundos, con un límite superior en los nanosegundos de 999999. El objetivo es combinar los valores de nanosegundos y milisegundos para garantizar la máxima resolución posible con el límite dado. Esto es para la comparabilidad con los métodos sleep / wait y alguna otra biblioteca externa que proporciona grandes valores de nanosegundos.
Editar: mi código se parece a lo siguiente ahora:
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) {
}
}
}
Saludos, Chris
¿Por qué no utilizar los métodos integrados de Java? TimeUnit es parte del paquete simultáneo, por lo que está diseñado exactamente para sus necesidades
long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);
Para una conversión cada vez más corta usando java.util.concurrent.TimeUnit
, equivalente a lo que Shawn escribió anteriormente, puede usar:
long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);
Solo toma el divmod de eso con 1000000.