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