Conversione di nanosecondi per millisecondi e nanosecondi <999999 in Java
-
29-09-2019 - |
Domanda
Mi chiedo che cosa il modo più preciso di conversione di un grande valore di nanosecondi è quello di millisecondi e nanosecondi, con un limite massimo per i nanosecondi di 999999. L'obiettivo è quello di combinare i nanosecondi e valori millisecondi per garantire la massima risoluzione possibile con il limite indicato. Questo è per la comparabilità con i metodi di sonno / attesa e qualche altra libreria esterna che dà fuori i valori di grandi dimensioni nanosecondo.
Edit: il mio aspetto codice come il seguente ora:
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) {
}
}
}
Saluti, Chris
Soluzione
Basta prendere l'divmod di esso con 1000000.
Altri suggerimenti
Perché non utilizzare il costruito nel metodi Java. La TIMEUNIT è parte del pacchetto concomitante così costruita esattamente per voi ha bisogno
long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);
Per una conversione sempre più brevi utilizzando java.util.concurrent.TimeUnit
, equivalente a quello che Shawn ha scritto sopra, è possibile utilizzare:
long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);