10

私は、Oracle Java7 Update 5 で UUID マルチスレッドのバグを発見した可能性があると考えており、誰かが独立した例で確認できるかどうか疑問に思っていました。基本的に、UUID.Random() を同時に呼び出すと (64 スレッドを使用しています)、ほとんどの場合、衝突がすぐに発生します)。

ただし、UUIDジェネレーターが事前に一連のUUIDを投げるだけのテストを実行してウォームアップされている場合、正常に動作するようです. これがscalaの要点です:

https://gist.github.com/3318973

64 の異なるスレッドから同期している変更可能な Set に挿入していることに注意してください。メイン スレッドは、ワーカーが終了するのを待ってブロックし、設定されたサイズが適切であることを確認します。衝突が発生すると、衝突が出力されます。

ありがとう!アダム

4

2 に答える 2

7

これである可能性があります:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7071826

これは7u6で修正されており、まもなくリリースされる予定です。

于 2012-08-11T02:47:52.703 に答える
2

Java 1.7.0_05 (scala や scalatest は関係ありません) で簡単に確認しましたが、UUID の衝突はまったく再現できませんでした。私の基本的なセットアップは同じで、128 個のスレッドがそれぞれ同期セットで 10000 個の uid をスローします。これはテストコードの問題である可能性が非常に高く、このマシンの atm ではダブルチェックできません。

于 2012-08-11T00:21:12.347 に答える