Я полагаю, что, возможно, нашел ошибку многопоточности UUID -в Oracle Java7 Update 5, и мне было интересно, может ли кто-нибудь подтвердить это независимым примером. В основном, что происходит, если я вызываю UUID.Random ()одновременно (Я использую 64 потока ), я быстро получаю коллизию большую часть времени ).
Однако,Если генератор UUID предварительно прогрет, запустив тест, который просто подбрасывает кучу UUID, он работает нормально. Вот суть в scala:
https://gist.github.com/3318973
Важно отметить, что я вставляю в изменяемый набор, который синхронизирую из 64 разных потоков. Основной поток блокируется, ожидая завершения работы рабочих процессов, а затем проверяет, соответствует ли заданный размер тому, каким он должен быть. Столкновения печатаются по мере их возникновения.
Спасибо! Адам