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
}
}
}