Статическая синхронизация с нестатической синхронизацией в Java
Java поддерживает несколько потоков для выполнения. Это может привести к тому, что два или более потока будут обращаться к тем же полям или объектам одновременно. Синхронизация - это способ, используемый для защиты доступа к ресурсам, к которым обращаются одновременно. Синхронизированный блок кода может выполняться только одним потоком за раз.
Синхронизация в Java - это в основном реализация мониторов. При синхронизации нестационарного метода монитор принадлежит экземпляру. При синхронизации по статическому методу монитор принадлежит классу. В случае нестатического синхронизированного метода память выделяется многократно при каждом вызове метода. Но память для статического метода выделяется только один раз во время загрузки класса. Это означает, что при выполнении статического метода весь класс блокируется. Таким образом, другие статические синхронизированные методы также блокируются. Если один поток выполняет статический синхронизированный метод, все остальные потоки, пытающиеся выполнить любые статические синхронизированные методы, будут заблокированы.