Sachez qu'il existe certains problèmes où l' System#nanoTime()
ne peut pas être utilisé de manière fiable sur les CPU multi-coeurs pour enregistrer le temps écoulé ... chaque cœur dispose de dispose de son propre TSC (Time Stamp Counter): ce compteur est utilisé pour obtenir des nano-temps (c'est vraiment le nombre de tiques puisque le PROCESSEUR démarré).
Donc, à moins que le système d'exploitation n'certains TSC temps la déformation de garder le noyau de la synchronisation, puis, si un fil est prévue sur une base lorsque le temps initial de la lecture est prise, puis passer à une autre base, le temps relatif peut sporadiquement semblent sauter vers l'arrière et vers l'avant.
J'ai remarqué cela il y a quelques temps sur AMD/Solaris où le temps écoulé entre deux points de chronométrages ont parfois, en revenant comme des valeurs négatives ou de façon inattendue de grands nombres positifs. Il y avait un patch du noyau Solaris et d'un paramètre du BIOS tenu de la force la technologie AMD PowerNow! hors, ce qui semble résolu.
Aussi, il n'y a (à ma connaissance) une mesure non fixées bug lors de l'utilisation de java System#nanoTime()
dans une VirtualBox environnement; à l'origine de toutes sortes de bizarre intermittent problèmes de threading pour nous autant de l' java.util.concurrency
se repose sur les nano temps.
Voir aussi:
http://stackoverflow.com/questions/510462/is-system-nanotime-completely-useless
http://vbox.innotek.de/pipermail/vbox-trac/2010-January/135631.html