Зачем синхронизировать на небольших объектах?

1

Как блок синхронизации в производительности Java зависит от размера объекта, на котором выполняется синхронизация?

synchorized (lock) {
    //some code here
}

Представьте, что блокировка может быть просто new Object() поскольку она используется или может быть экземпляром неизменяемого класса, но с огромным количеством инициализированных полей.

Теги:
synchronization

2 ответа

5
Лучший ответ

synchronized не влияет размер объекта, поскольку он является (небольшим) семафором на объекте, проблемы производительности связаны с тем, как несколько потоков обращаются к объекту, другими словами, о том, как приложение архивировано.

  • 0
    synchorized is not affected by the object size.. +1
0

Производительность синхронизации не зависит от размера объекта, на который вы синхронизируете. Однако использование "большого" объекта для синхронизации может повредить производительность в других областях - во-первых, для его инициализации может потребоваться время, а во-вторых, оно будет зависеть от памяти, вызывая больше сбоев страницы и т.д. (Предполагая, что это не требуется вашим кодом независимо от того, в этом случае нет смысла хранить дополнительный объект только для целей синхронизации).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню