Môžete vysvetliť pojem monitor v Jave a jeho úlohu pri synchronizácii vlákien?
sobes.tech AI
Odpoveď od AI
V Jave je monitor mehanizem za sinhronizacijo, ki zagotavlja medsebojno izključevanje (mutex) pri dostopu do skupnih virov med nitmi. Vsak objekt v Javi ima povezani monitor.
Ko nit vstopi v sinhroniziran blok ali metodo (na primer z uporabo ključne besede synchronized), pridobi monitor objekta. Dokler je monitor zaseden, bodo druge niti, ki poskušajo vstopiti v isti sinhroniziran blok ali metodo istega objekta, blokirane in bodo čakale na sprostitev monitorja.
To zagotavlja, da le ena nit hkrati izvaja kritično sekcijo kode, preprečuje razmere tekme in zagotavlja pravilnost podatkov.
Primer:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Tukaj so metode increment in getCount sinhronizirane, kar pomeni, da uporabljajo monitor objekta Counter za zaščito dostopa do spremenljivke count.