Java: Ungenauigkeit / Messfehler in System.currentTimeMillis() und new Date()

Zeitmessung in JavaUnglaublich, aber heute hat mich Java zum ersten Mal in meinem Leben enttäuscht:-(
Wie die Überschrift des Blogeintrags verrät, habe ich Ungenauigkeiten in der Zeitmessung von Java festgestellt. Normalerweise verwende ich Timestamps selten als Primery-Key in der Datenbank, aber wenn die eigentliche Verarbeitung unter 10 Millisekunden dauert, kann das zu Problemen unter Windows XP führen! Laut API bestimmt das darunter liegende Betriebssystem wie oft der Zeitwert aktualisiert wird. Mit anderen Worten: Windows XP (32 Bit) und Java Version: JDK 1.6.0_16 aktualisieren im Durchschnitt aller 15 ms die Systemzeit. Somit erhält man in meinem Beispiel(Datenbank-Primery-Key) zweimal den gleichen Timestamp und provoziert damit einen SQL-Fehler. Dabei spielt es keine Rolle, ob man die Funktion System.currentTimeMillis(); oder das Objekt new Date(); verwendet.
(mehr …)