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`-ზე
}
}
}