Добавление элементов в список в любом случае должно выполняться в какой-то очередности, так что блокируй смело.
Олег ИвашневГуру (4069)
4 года назад
В блоке кода еще выполняются определенные действия, которые отнимают немалое время, а вынести их за блок кода не получится. Поэтому надо реализовать так, что если все числа в потоках разные, то они спокойно многопоточно считают вычисления, но если попалось не уникальное число, то этот поток должен упереться в блокировку и ждать выполнения похожего потока. А вот add можно вынести за блок. Но это не решит проблему.
Если одновременно в каких-либо потоках совпали числа (например: 110, 120 и 200, 120) , то второй поток ждет окончания работы с synchronized блоком потока с таким же числом. Подскажите, что указать объектом для такого синхронизированного блока?
synchronized (...?) {
//код
}
Ведь, если укажу имя списка, то монитор будет блокировать весь список и они будут просто по очереди выполнять этот блок кода, верно я понимаю?