Conversion de nanosecondes en millisecondes et nanosecondes <999999 en Java
-
29-09-2019 - |
Question
Je me demande ce que la façon la plus précise de la conversion d'une grande valeur nanosecondes est en millisecondes et nanosecondes, avec une limite supérieure sur les nanosecondes de 999999. L'objectif est de combiner les valeurs nanosecondes et millisecondes pour assurer la résolution maximale possible avec la limite donnée. Ceci est pour la comparaison avec les sommeil / méthodes d'attente et une autre bibliothèque externe qui donne des grandes valeurs nanosecondes.
Edit: mon apparence de code comme suit maintenant:
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) {
}
}
}
Cordialement, Chris
La solution
Il suffit de prendre la divmod de celui-ci avec 1000000.
Autres conseils
Pourquoi ne pas utiliser les méthodes intégrées Java. Le TimeUnit fait partie du paquet concurrent donc construit exactement pour vos besoins
long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);
Pour une conversion toujours plus court en utilisant java.util.concurrent.TimeUnit
, ce qui équivaut à ce que Shawn a écrit ci-dessus, vous pouvez utiliser:
long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);