Түймөлөр тарабынан жалпы эс тутумдан өзгөрмөнү окуу кандай болот?
sobes.tech AI
AIден жооп
Javaда, жиптерлер тарабынан жалпы эс тутумдан өзгөрмөнү окуу Java Эс тутуму моделин (Java Memory Model) эске алуу менен жүргүзүлөт. Ар бир жип өзүнүн жергиликтүү көчүрмөсүн процессордун кэшинде сактай алат, ошондуктан актуалдуу маанини жалпы эс тутумдан окуу үчүн синхрондуулукту эске алуу керек.
Эгер өзгөрмө volatile ачкыч сөзү менен жарыяланган болсо, бул өзгөрмөнүн окуу жана жазуу түз негизги эс тутумдан жүргүзүлөт, бул жиптер ортосунда өзгөрүүлөрдүн көрүнүктүүлүгүн кошумча синхрондуксуз камсыздайт.
Эгер volatile колдонулбаса, туура окуу үчүн synchronized блокторун колдонуу керек; алар эс тутумдун туруктуулугун жана өзгөрүүлөрдүн көрүнүктүүлүгүн камсыздайт.
Мисал volatile менен:
volatile int sharedVar;
// Бир жипте
sharedVar = 10;
// Башка жипте
int жергиликтүүКөчүрмө = sharedVar; // жаңыланган маанини кепилдик менен көрөт
volatile же synchronized колдонулбаган учурда, жип кэшдештирүү себептүү эски маанини көрүшү мүмкүн.