Sobes.tech
Junior — Middle

სად არის განხორციელებული ბლოკირების მექანიზმი, როდესაც გამოიყენება synchronized საკვანძო სიტყვა?

sobes.tech AI

პასუხი AI-სგან

Java-да, როდესაც თქვენ იყენებთ საკვანძო სიტყვა synchronized, ბლოკირების მექანიზმი დამოკიდებულია კონტექსტზე:

  • თუ synchronized გამოიყენება არასტატიკური მეთოდზე, ბლოკირება ხდება ობიექტზე (this), რომლისგანაც მეთოდი გამოიძახება.
  • თუ synchronized გამოიყენება სტატიკურ მეთოდზე, ბლოკირება ხდება კლასის ობიექტზე (Class), ანუ თავად კლასზე.
  • თუ გამოიყენება synchronized(obj) ბლოკი, ბლოკირება ხდება obj ობიექტზე.

მაგალითი:

public class Example {
    public synchronized void instanceMethod() {
        // ბლოკირება `this`-ზე
    }

    public static synchronized void staticMethod() {
        // ბლოკირება `Example.class`-ზე
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // ბლოკირება `lock`-ზე
        }
    }
}