Мне интересно, как именно "синхронизируется" работает в Java.
Допустим, я моделирую настольную игру, состоящую из нескольких полей. Я реализую поля как класс (Field) и доску как класс (Board), который содержит несколько полей.
Далее, скажем, я смоделировал метод moveTo (Player pl) в поле, чтобы игрок мог перейти на это поле. Каждый игрок представлен потоком.
Хотя все потоки должны выполнять некоторые действия одновременно (например, бросать кубики), за один раз должен двигаться только один игрок.
Как бы я это обеспечил?
Достаточно ли синхронизировать метод moveTo (Player pl)? Или мне нужен каскадный метод в игре, чтобы убедиться, что только один игрок двигается за раз? (Или есть лучшее решение)?
Чтобы подвести итог:
Будет ли синхронизирована блокировка метода в КАЖДОМ объекте, который имеет этот метод, или будет синхронизирована блокировка метода только в объекте, который используется в данный момент?
И если второй случай: есть ли простой способ заблокировать метод для каждого объекта, в котором реализован этот метод?
Спасибо !!!