Я работаю над веб-приложением, где мне нужно создать случайное число для каждого запроса. Запрос попадет в конкретное ведро из набора ведер. Случайные числа, сгенерированные для данного ведра, должны иметь равномерное распределение. Я планирую использовать карту, которая имеет SplittableRandom экземпляров против ведра идентификаторов, как этоIs SplittableRandom.split() threadsafe?
buketId -> SplittableRandom
Чтобы развлечь веб-запрос, я первый проверить bucketId, указанный в запросе. Затем я выбираю соответствующий экземпляр SplittableRandom и вызывается split() на нем. В режиме тяжелой нагрузки split() будет вызываться в одном экземпляре несколькими потоками. Является ли этот подход потоком безопасным?
Нет. Либо создавайте свежие экземпляры локально, либо используйте обычный «Случайный». – shmosel