если есть объект, у которого есть final-поле, то этот объект можно будет использовать только после установки этого final-поля (и всего, на что это поле может ссылаться). Не стоит, впрочем, забывать, что если вы передадите из конструктора ссылку на конструируемый объект (т.е. this) наружу, то кто-то может увидеть ваш объект в недостроенном состоянии.
достаточно сделать поле, запись в которое происходит последней, final, как всё магически заработает и без volatile и без синхронизации каждый раз
Если бы метод был бы статическим , то он был бы общим для всех объектов , и блокировался доступ для всех нитей , которые обращаются к этому методу.
Обратите внимание , что есть мьютекс объекта и мьютекс класса .
Если нить обращается к не статическому методу , то блокируется мьютекс этого объекта и ВСЕ НЕ статические синхронизированные методы этого объекта становятся заблокированными.
Если нить обращается к статическому методу ( а он общий для всех ) то блокируется мьютекс класса и ВСЕ СТАТИЧЕСКИЕ методы становятся заблокированными.
Но если у объекта один синхронизированный метод статический , а другой синхронизированный метод не статический они могут одновременно выполняться .