2010-04-22 19 views
7

Quiero contar el tiempo transcurrido entre dos eventos en nanosegundos. Para hacer eso, puedo usar System.nanoTime() como se menciona here. El problema es que los dos eventos están sucediendo en diferentes hilos.¿System.nanoTime() es coherente en todos los subprocesos?


Desde nanoTime() no devuelve una marca de tiempo absoluta, sino que sólo se puede utilizar para calcular el tiempo diferencias, me gustaría saber si los valores que recibo de los dos hilos diferentes son consistentes con la física tiempo transcurrido entre los dos eventos.

+0

Puede usar nanoTime() para calcular la diferencia a partir de una hora conocida. Esto puede permitirle obtener un reloj bastante preciso. No sugeriría usarlo por momentos más pequeños que un microsegundo. –

Respuesta

8

Es supposed to be, pero debido a kernels defectuosos o hardware, the answer can be no, al menos en algunos entornos.

+1

Además, una vez me metí en problemas al configurar '-XX: AggressiveOpts' en Sun JVM condujo a valores no confiables para System.nanoTime(). –

+0

No tengo experiencia en el asunto, pero vincularé [esta respuesta muy votada] (http://stackoverflow.com/a/4588605/1031507) que sugiere que esta publicación de blog vinculada es incorrecta. –

+0

@PaulWhalen ¿te gusta más mi respuesta editada? –

Cuestiones relacionadas