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

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top