tomar tiempos tiempo segundos para milisegundos medir imprimir ejecución ejecucion controlar como clase calcular java time milliseconds nanotime

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.