Java 7 uuid ошибка?

Я полагаю, что, возможно, нашел многопоточную ошибку UUID в Oracle Java7 Update 5, и мне было интересно, сможет ли кто-нибудь подтвердить это с помощью независимого примера. В основном, что происходит, если я вызываю UUID.Random() одновременно (я использую 64 потока), я получаю столкновение большую часть времени).

Однако, если генератор UUID разогревается, предварительно запустив тест, который просто бросает кучу UUID, кажется, что он работает нормально. Здесь суть в scala:

https://gist.github.com/3318973

Важно отметить, что я вставляю в изменяемый набор, который я синхронизирую из 64 разных потоков. Основные блоки потока, ожидающие завершения работниками, а затем проверяют, что установленный размер является тем, чем он должен быть. Столкновения печатаются по мере их возникновения.

спасибо! Адам

Ответ 2

Я проверил быструю проверку с помощью Java 1.7.0_05 (без scala или scalatest) и не смог воспроизвести какие-либо столкновения UUID вообще. Моя базовая настройка такая же, с 128 потоками, набрасывающими 10000 uids в синхронизированном наборе каждый. Это, скорее всего, проблема с вашим тестовым кодом, который я не могу проверить на этой машине.