Evet olacak (herhangi bir senkronize blok / fonksiyonda).
Birkaç gündür bu soruyu kendime merak ediyordum (aslında kotlin'de). Sonunda iyi bir açıklama buldum ve paylaşmak istiyorum:
Sınıf düzeyi kilidi, çalışma zamanında sınıfın tüm kullanılabilir örneklerinden herhangi birinde birden çok iş parçacığının senkronize bloğa girmesini engeller. Bu, çalışma zamanında 100 DemoClass örneği varsa, o zaman yalnızca bir iş parçacığı bir seferde herhangi bir örnekte demoMethod () çalıştırabilir ve diğer tüm örnekler diğer iş parçacıkları için kilitlenir.
Statik veri iş parçacığını güvenli hale getirmek için her zaman sınıf düzeyinde kilitleme yapılmalıdır. Statik anahtar kelimenin yöntemlerin verilerini sınıf düzeyiyle ilişkilendirdiğini bildiğimiz için, sınıf düzeyinde yapmak için statik alanlarda veya yöntemlerde kilitlemeyi kullanın.
Artı neden .class . Bunun nedeni .class
şuna benzer herhangi bir statik sınıf değişkenine eşdeğer olmasıdır:
private final static Object lock = new Object();
burada kilit değişkeni adı sınıf ve tür Sınıf <T>
Daha fazlasını okuyun:
https://howtodoinjava.com/java/multi-threading/object-vs-class-level-locking/