Frage

Ich frage mich, was die genaueste Methode einen großen ns Wertes von Umwandlung in Millisekunden und Nanosekunden ist, mit einer oberen Grenze für die Nanosekunden von 999999. Das Ziel ist es, die Nanosekunden und Millisekunden Werte zu kombinieren, um die maximale Auflösung kann erreicht werden, mit der Grenze gegeben. Dies ist für die Vergleichbarkeit mit den Schlaf- / Warte Methoden und einige andere externe Bibliothek, die große Nanosekunde Werte gibt aus.

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

War es hilfreich?

Lösung

Nehmen Sie einfach die divmod davon mit 1000000.

Andere Tipps

Warum nicht die in Java-Methoden verwenden errichtet. Die Timeunit ist Teil des gleichzeitigen Pakets so genau gebaut für Sie

brauchen
  long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);

Für eine immer kürzere Konvertierung mit java.util.concurrent.TimeUnit, entspricht dem, was Shawn oben geschrieben habe, können Sie:

    long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top