Информация об изменениях

Сообщение Re[3]: Помогите с многопоточным кодом от 06.09.2022 20:54

Изменено 06.09.2022 21:01 StanislavK

Re[3]: Помогите с многопоточным кодом
Здравствуйте, vsb, Вы писали:

vsb>Не, у меня там в реальном коде немного по-другому, в это не упирается.


vsb>Если интересно — полный код, но там специфика UUID формата. Генерацию случайного числа я заменил на счетчик.

А чем не устраивает то, что делается в randomUUID? Типа боитесь что генератор повторится?
Ну ок. В общем, тогда задача сводится к генерации long который не повторяется и у всех потоков разный. Сделать это проще всего если просто заранее решить сколько есть потоков и разделать для них диапазоны long-а. Потом просто в каждом их них делать инкремент — никаких синхронизаций и системных вызовов.

vsb>Первый вариант выдаёт 2 млн значений в секунду, второй вариант выдаёт около 3, формат ограничивает 4 млн в секунду.

Это ваще повезло. SecureRandom на сервере, скорее всего ваще ляжет. Его надо только для сида использовать.
Re[3]: Помогите с многопоточным кодом
Здравствуйте, vsb, Вы писали:

vsb>Не, у меня там в реальном коде немного по-другому, в это не упирается.


vsb>Если интересно — полный код, но там специфика UUID формата. Генерацию случайного числа я заменил на счетчик.

А чем не устраивает то, что делается в randomUUID? Типа боитесь что генератор повторится?
Ну ок. В общем, тогда задача сводится к генерации long который не повторяется и у всех потоков разный. Сделать это проще всего если просто заранее решить сколько есть потоков и разделить для них диапазоны long-а. Потом просто в каждом их них делать инкремент — никаких синхронизаций и системных вызовов.

vsb>Первый вариант выдаёт 2 млн значений в секунду, второй вариант выдаёт около 3, формат ограничивает 4 млн в секунду.

Это ваще повезло. SecureRandom на сервере, скорее всего ваще ляжет. Его надо только для сида использовать.