Как устроен ThreadLocalRandom?

Ответ

ThreadLocalRandom использует отдельный seed для каждого потока — хранится в полях класса Thread (это специальная JVM-оптимизация, не обычный ThreadLocal). Padding-поля снижают false sharing, обновление seed идёт без CAS и без синхронизации, так как разделяемого состояния нет.

Разбор: Ключевая идея ThreadLocalRandom — отсутствие разделяемого состояния: seed лежит прямо в полях самого Thread (threadLocalRandomSeed и др.), padding-поля снижают false sharing, и обновление seed идёт без CAS и без синхронизации. Поэтому неверны варианты с общим seed под локом или CAS, а также с обёрткой ThreadLocal<Random> — это специальная JVM-оптимизация, а не обычный ThreadLocal и не один генератор на всех.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться