Junior — Middle
Melyik objektumon történik a zárolási mechanizmus a synchronized kulcsszó használatakor?
sobes.tech MI
Válasz az MI-től
Java-ban, a synchronized kulcsszó használatakor a zárolási mechanizmus a kontextustól függ:
- Ha a
synchronizednem statikus módszerre alkalmazzuk, akkor a zárolás az objektumon (this) történik, amelyen a módszer hívásra kerül. - Ha a
synchronizedstatikus módszerre alkalmazzuk, akkor a zárolás a osztály objektumán (Class) történik, azaz az osztályon. - Ha egy
synchronized(obj)blokkot használunk, akkor a zárolás azobjobjektumon történik.
Példa:
public class Example {
public synchronized void instanceMethod() {
// zárolás a this-en
}
public static synchronized void staticMethod() {
// zárolás az Example.class-on
}
public void blockMethod() {
Object lock = new Object();
synchronized(lock) {
// zárolás a lock-on
}
}
}