Junior — Middle
Môžete vysvetliť, ako funguje model pamäte v Jave a aké sú jeho základné princípy?
sobes.tech AI
Odpoveď od AI
Model pamäte v Jave popisuje, ako vlákna interagujú s pamäťou, vrátane práce s premennými a synchronizácie. Základné princípy:
- Viditeľnosť zmien: zmeny vykonané jedným vláknom musia byť viditeľné pre ostatné vlákna pri správnej synchronizácii.
- Atomickosť: operácie nad premennými môžu byť atómové (napríklad čítanie/zápis primitívnych typov, okrem long a double bez volatile).
- Poradie vykonávania: prekladač a procesor môžu meniť poradie inštrukcií, ale za dodržania pravidiel synchronizácie.
Java Memory Model (JMM) definuje, ako a kedy sa zmeny premenných stávajú viditeľnými pre ostatné vlákna, pomocou kľúčových slov volatile, synchronized a ďalších mechanizmov.
Príklad:
volatile int counter = 0;
// Zmena counter v jednom vlákne bude garantovane viditeľná v inom
counter = 5;
Bez volatile alebo synchronizácie sa zmeny nemusia ihneď stať viditeľnými pre ostatné vlákna kvôli cache a optimalizáciám.