Junior — Middle
Na jakém objektu je prováděn mechanismus blokování při použití klíčového slova synchronized?
sobes.tech AI
Odpověď od AI
V jazyce Java závisí mechanismus zámku při použití klíčového slova synchronized na kontext:
- Pokud se
synchronizedpoužije na nestatickou metodu, zámek se vztahuje na objekt (this), na kterém je metoda volána. - Pokud se
synchronizedpoužije na statickou metodu, zámek se vztahuje na objekt třídy (Class), tedy na samotnou třídu. - Pokud je použit blok
synchronized(obj), zámek se vztahuje na objektobj.
Příklad:
public class Example {
public synchronized void instanceMethod() {
// zámek na this
}
public static synchronized void staticMethod() {
// zámek na Example.class
}
public void blockMethod() {
Object lock = new Object();
synchronized(lock) {
// zámek na lock
}
}
}