2016-07-13 8 views
0

マルチスレッドのアプリケーションでSystem.currentTimeMillis()という結果を使用して一意のIDを生成したいとします。これは私のコードです:Javaマルチスレッド。異なるスレッドで同じSystem.currentTimeMillis()の値

私はMyRunnableClassオブジェクトのrun()メソッドを実行する10のスレッドを開始します。 異なるスレッドのSystem.currentTimeMillis()の結果が同じであることがあります。

+0

何の固有IDですか?スレッド? –

+0

可能性が高い場合は、スレッド識別子を独自の値に結び付けることができます –

+1

スレッドを開始する人は、初期化時に一意のIDを与えてください。 Thread.currentThread()。getId() –

答えて

3

関数System.currentTimeMillis()は、ミリ秒単位で現在の時刻を返します。したがって、スレッドが同じミリ秒で実行されている場合、この関数は同じ結果を返します。だからあなたはそれのようなUUIDを生成することができます:UUID.randomUUID()

+1

以上の単純な 'atomicLong.getAndIncrement();' – assylias

+0

はい、あなたは単純なインクリメンタルID – Creart

1

今日のCPUは1秒間に約100,000,000,000命令を処理できるため、答えは間違いなく「確かに、異なるスレッドのSystem.currentTimeMillis()の結果が同じであることは間違いありません」

関連する問題