जावा में कौन से ऑपरेशन परमाणु माने जाते हैं?
जवाबों:
और शायद कुछ और। जैल को देखो ।
जैसा कि टिप्पणियों में कहा गया है, परमाणुता दृश्यता नहीं दर्शाती है। इसलिए जब एक और सूत्र को आंशिक रूप से लिखित int
नहीं देखने की गारंटी दी जाती है , तो यह कभी भी नया मूल्य नहीं देख सकता है।
लंबे और दोहरे पर परिचालन सामान्य 64 बिट सीपीयू परमाणु के साथ-साथ होता है , हालांकि इसकी कोई गारंटी नहीं है। यह सुविधा अनुरोध भी देखें ।
64 bit jvm, long and double assignments are also atomic.
क्या आपको यकीन है? मैं कहूंगा कि वे संकलित कोड के लिए हैं, लेकिन कोड की व्याख्या के बारे में क्या? संभवतः आप सही हैं, लेकिन क्या इसकी कोई गारंटी है?
जावा में, 32-बिट या छोटी मात्रा में पढ़ना और लिखना परमाणु होने की गारंटी है।
परमाणु द्वारा, हमारा मतलब है कि प्रत्येक क्रिया एक चरण में होती है और इसे बाधित नहीं किया जा सकता है। इस प्रकार, जब हमारे पास बहुपरत अनुप्रयोग होते हैं, तो पढ़ने और लिखने के संचालन थ्रेड-सुरक्षित होते हैं और इसे सिंक्रनाइज़ नहीं किया जाना चाहिए।
उदाहरण के लिए, निम्न कोड थ्रेड सुरक्षित है:
public class ThreadSafe
{
private int x;
public void setX(int x)
{
this.x = x;
}
}
ऐसा लगता है कि एटॉमिकलॉन्ग.जावा में इस पद्धति के आधार पर लोंगो के कार्य परमाणु होते हैं:
public final void set(long newValue) {
value = newValue;
}
किसी भी सिंक्रनाइज़ेशन की अनुपस्थिति पर ध्यान दें।
value
। यह है volatile
।
value
है volatile
का काम नहीं है value
परमाणु, यह महज से बचा जाता है "का प्रकाशन" मुद्दों।
volatile
: देशांतर और युगल होने के लिए परमाणु की गारंटी है java.sun.com/docs/books/jls/third_edition/html/memory.html#17.7