Sobes.tech
Junior — Middle

Можете ли да обясните понятието монитор в Java и ролята му в синхронизацията на нишки?

sobes.tech AI

Отговор от AI

В Java мониторът е механизъм за синхронизация, който осигурява взаимно изключване (mutex) при достъп до споделени ресурси между нишки. Всяки обект в Java има свързан монитор.

Когато нишка влезе в синхронизирана блок или метод (например, с помощта на ключовата дума synchronized), тя завладява монитора на обекта. Докато мониторът е зает, други нишки, които се опитват да влязат в същия синхронизирани блок или метод на същия обект, ще бъдат блокирани и ще чакат освобождаването на монитора.

Това гарантира, че само една нишка едновременно изпълнява критичната секция от кода, предотвратява състезателни условия и осигурява коректност на данните.

Пример:

public class Counter {
    private int count = 0;

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

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

Тук методите increment и getCount са синхронизирани, тоест използват монитора на обекта Counter за защита на достъпа до променливата count.