Sobes.tech
Junior — Middle

Můžete vysvětlit pojem monitor v jazyce Java a jeho roli při synchronizaci vláken?

sobes.tech AI

Odpověď od AI

V Javě je monitor synchronizační mechanismus, který zajišťuje vzájemné vyloučení (mutex) při přístupu ke sdíleným zdrojům mezi vlákny. Každý objekt v Javě má přiřazený monitor.

Když vlákno vstoupí do synchronizovaného bloku nebo metody (například pomocí klíčového slova synchronized), získá monitor objektu. Dokud je monitor obsazen, ostatní vlákna, která se pokusí vstoupit do stejného synchronizovaného bloku nebo metody téhož objektu, budou zablokována a budou čekat na uvolnění monitoru.

Toto zajišťuje, že pouze jedno vlákno najednou provádí kritickou sekci kódu, předchází závodním podmínkám a zajišťuje správnost dat.

Příklad:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Zde jsou metody increment a getCount synchronizované, což znamená, že používají monitor objektu Counter k ochraně přístupu k proměnné count.