क्या यह कक्षा थ्रेड-सुरक्षित है?परमाणु इंटेगर बनाम सिंक्रनाइज़ गेटर्स/सेटर्स
क्या असंगत मूल्य देखना संभव है? आइए शुरुआती रूप से एक मूल्य 80 है। थ्रेड 1 कॉल setA(100)
और फ़ंक्शन में प्रवेश करता है लेकिन अभी तक a.set(100)
पर कॉल नहीं किया गया है और थ्रेड 2 समवर्ती रूप से getA()
पर कॉल करता है। क्या थ्रेड 2 के लिए 80 देखना संभव है?
public class A {
private AtomicInteger a;
public int getA() {
return a.get()
}
public void setA(int newVal){
a.set(newVal);
}
}
मुझे पता है कि सिंक्रनाइज़ किया जा रहा यह धागा 2 की गारंटी देगा देखता है 100, लेकिन AtomicInteger साथ यकीन नहीं।