2016-07-13 11 views
0

Ich möchte das Ergebnis von System.currentTimeMillis() in der Multithread-Anwendung verwenden, um eindeutige IDs zu generieren. Das ist mein Code:Java Multithreading. Gleiche Werte für System.currentTimeMillis() in verschiedenen Threads

Ich starte 10 Threads, die MyRunnableClass-Objekt run() -Methode ausführen. Stimmt es, dass manchmal das Ergebnis von System.currentTimeMillis() in verschiedenen Threads identisch sein kann?

+0

eindeutige IDs von was? Themen? –

+0

höchst möglich, können Sie einige Thread-ID zu Ihrem eindeutigen Wert concate –

+1

Wenn Sie derjenige sind, der die Threads startet, warum geben Sie ihnen nicht eine eindeutige ID bei der Initialisierung? Sie können auch Thread.currentThread() verwenden. GetId() –

Antwort

3

Die Funktion System.currentTimeMillis() gibt die aktuelle Zeit in Millisekunden zurück. Wenn also Ihre Threads während derselben Millisekunde ausgeführt werden, gibt diese Funktion das gleiche Ergebnis zurück. So können Sie UUIDs so erzeugen: UUID.randomUUID()

+1

oder einfacher eine 'atomicLong.getAndIncrement();' – assylias

+0

Ja können Sie, wenn Sie nur eine einfache inkrementierbare ID wollen – Creart

1

Heutige CPUs können ungefähr 100.000.000.000 Anweisungen pro Sekunde verarbeiten, daher lautet die Antwort definitiv "Ja, es stimmt, dass manchmal das Ergebnis von System.currentTimeMillis() in verschiedenen Threads identisch sein kann".