у которого есть много полей (10 - 15). От состояния полей многое зависит в приложении, поэтому мне нужно жестко синхронизировать все изменения, чтобы несколько потоков не могли менять состояние одновременно. Я придумал всё это закрыть ReentrantLock'ом. Вопрос в том, насколько это эффективное решение? Может есть вариант получше, о котором я не догадываюсь?
Например избежать этого - не раздавая объекты в разные потоки, а всегда менять его в одном
Если количество чтений на порядки доминирует над записями, то StampedLock (по сути, это версионирование объекта).
Ну хз. Имхо, это как минимум неудобно, шедулить все изменения на поток, который создаёт объект. Плюс, тот поток, который этот объект создаёт, может быть загружен и изменения будут применяться со значительной задержкой. Тем более не прикольно создавать отдельный поток для обработки этих изменений.
Ага, про это не читал, посмотрю, спасибо
Обсуждают сегодня