Sobes.tech
Junior — Middle

Πώς πραγματοποιείται το μπλοκάρισμα κατά την κλήση μιας στατικής μεθόδου που δηλώνεται με τη λέξη-κλειδί synchronized;

sobes.tech AI

Απάντηση από AI

Αν μια στατική μέθοδος δηλώνεται με τη λέξη-κλειδί synchronized, τότε ο αποκλεισμός συμβαίνει στο αντικείμενο της κλάσης (Class object), και όχι σε μια παρουσία.

Αυτό σημαίνει ότι κατά την κλήση τέτοιας μεθόδου, το νήμα (thread) αποκτά το monitor (lock) της κλάσης στην οποία ανήκει η μέθοδος, και άλλα νήματα που προσπαθούν να καλέσουν οποιαδήποτε άλλη συγχρονισμένη στατική μέθοδο αυτής της ίδιας κλάσης, θα περιμένουν την απελευθέρωση του lock.

Παράδειγμα:

public class MyClass {
    public static synchronized void staticSyncMethod() {
        // κώδικας μεθόδου
    }
}

Εδώ, ο monitor είναι το αντικείμενο MyClass.class.