Sobes.tech
Junior — Middle

Java'da senkronize edilmiş örnek yöntemler ile statik senkronize edilmiş yöntemler arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da senkronize edilmiş iki tür yöntem vardır: örnek senkronize yöntemler ve statik senkronize yöntemler. Temel fark, kilitlemenin hangi nesne üzerinde gerçekleştiğidir:

  • Örnek senkronize yöntemi (synchronized olmadan static): Kilitleme, yönteme ait olan nesne (this) üzerinde gerçekleşir. Bu, sınıfın birkaç örneği varsa, her birinin kendi kilidi olduğu anlamına gelir.

  • Statik senkronize yöntem (static synchronized): Kilitleme, sınıf nesnesi — Class nesnesi üzerinde gerçekleşir, bu nesne sınıfı temsil eder. Bu nedenle, kilit tüm sınıf örnekleri için ortaktır.

Örnek:

public class Example {
    public synchronized void instanceMethod() {
        // this kilitlenir
    }

    public static synchronized void staticMethod() {
        // Example.class kilitlenir
    }
}

Bu, iki akışın aynı nesnenin senkronize edilmiş örnek yöntemini aynı anda çalıştıramayacağı, ancak farklı nesnelerin farklı senkronize yöntemlerini çalıştırabileceği anlamına gelir.

Aynı zamanda, statik senkronize yöntem sınıfın tamamını kilitler, bu nedenle aynı anda yalnızca bir akış bu sınıfın herhangi bir statik senkronize yöntemini çalıştırabilir, nesnelerden bağımsız olarak.