Можете ли да обясните понятието монитор в 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.