Umwandlung von Nanosekunden bis Millisekunden und Nanosekunden < 999999 in Java
Frage ich mich, was die genaue Art und Weise der Umwandlung einer großen Nanosekunden-Wert ist in Millisekunden und Nanosekunden mit einer oberen Grenze auf die Nanosekunden von 999999. Das Ziel ist die Kombination der Nanosekunden und Millisekunden Werte ein um die maximale Auflösung möglich, die mit der Grenze gegeben. Dies ist für die Vergleichbarkeit mit der sleep /wait-Verfahren und einige andere externe Bibliothek gibt große Nanosekunden-Werte.
Edit: mein code sieht wie folgt nun:
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) {
}
}
}
Cheers,
Chris
- es ist erwähnenswert, dass dies die Zeit ist ein Hinweis auf das OS zu warten, mindestens so lang sein. In Windows und Linux, die Verzögerung ist in der Regel innerhalb von 2 ms, aber es kann sehr lange. IMHO solltest Du dir keine Gedanken über die nano-Sekunden-Zeitmessung, wie Sie sind unwahrscheinlich, um zu sehen, keinen Unterschied.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nehmen Sie einfach die divmod mit 1000000.
n
stets ein Rest mit der oberen Grenzen - 1
.Warum nicht mit dem eingebauten Java-Methoden. Die TimeUnit ist Teil des concurrent-Paket, so wurde genau für Sie braucht
Für eine immer kürzere Konvertierung mit
java.util.concurrent.TimeUnit
, äquivalent zu dem, was Shawn oben schrieb, die Sie verwenden können: