guarantees the visibility
for other threads of writes to
that variable.
O’zgaruvchini volatile deb elon qilish, shu o’zgaruvchining oxirgi qiymati boshqa Thread
larga ko’rinishini taminlaydi.
public class SharedObject {
public volatile int counter = 0;
}
dasturlash.uz
Volatile not enough
In the scenario given above, where one thread (T1) modifies the counter, and
another threads (T2,T3,T4) reads the counter (but never modifies it),
declaring the counter variable volatile is enough to guarantee visibility for T2
of writes to the counter variable.
If, however, both T1 and T2 were incrementing the counter variable, then
declaring the counter variable volatile would not have been enough.
Bitta holatni ko’raylik. T1- Thread qaysidir o’zgruvchini qiymatini o’zgartirsa
ba boshqa T2,T3,T4… Thread lar o’zgaruvchini faqat qiymatini o’qisa volatile
kalit so’zidan foydalansak bo’ladi. Bunda volatile kalit so’zi T2,T3,T4 Thread
lar o’zgaruvchining ohirgi qiymatini o’qishini taminlaydi.
Agar. T1 va T2 Thread lar bir vaqtni o’zida o’zgaruvchini qiymatini o’zgartirsa,
o’zgaruvchini volatile kalit so’zi bilan belgilash foyda bermaydi.
dasturlash.uz
Volatile not enough
If multi thread changes value of any variable we should use either
synchronized keyword or one of the many atomic data types found in
the
java.util.concurrent package
.
Agar birnechta Thread birvaqtni o’zida o’zgaruvchining qiymatini o’zgartirsa
biz Synchronized kalit so’zini yokiy
java.util.concurrent package
dagi data
tiplar dan bittasini ishlatishimiz kerak.
dasturlash.uz
Volatile links
https://jenkov.com/tutorials/java-concurrency/volatile.html
https://www.javatpoint.com/volatile-keyword-in-java
dasturlash.uz
Dostları ilə paylaş: |