Sobes.tech
Junior — Middle

Kuidas toimub lukustamine, kui kutsutakse välja staatiline meetod, mis on deklareeritud võtmesõnaga synchronized?

sobes.tech AI

Vastus AI-lt

Kui statiline meetod on deklareeritud võtmesõnaga synchronized, siis toimub lukustamine klassi objekti (Class object) peal, mitte eksemplari peal.

See tähendab, et sellise meetodi kutsumisel omandab niit (thread) klassi monitori (lock), millele meetod kuulub, ja teised niidid, kes püüavad kutsuda sama klassi teist synchronized statilist meetodit, ootavad lukust vabastamist.

Näide:

public class MyClass {
    public static synchronized void staticSyncMethod() {
        // meetodi kood
    }
}

Siin on monitor MyClass.class objekt.