जावा मेमोरी मॉडल के अनुसार, जब तक निष्पादन well-formed होता है तब तक निर्देशों को फिर से व्यवस्थित किया जा सकता है।क्या जावा रीडरिंग सिस्टम.currentTimeMillis() को प्रभावित करता है?
तो मुझे आश्चर्य है, क्या यह संभव है कि निम्नलिखित कोड निम्न आउटपुट उत्पन्न करते हैं?
[कोड] [एक ही धागे में]
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();
long c = System.currentTimeMillis();
[उत्पादन]
a == 10, b == 20, c == 15
संभव नहीं है, तो क्या JVM करता है/कार्यान्वयन ऐसा होने से रोकने के लिए क्या ?
जब तक आप इसे 1 जनवरी 1 9 70 के करीब घड़ी सेट के साथ सिस्टम पर नहीं चलाते हैं, तो संभवतः आपको उन सटीक मान नहीं मिलेंगे। JVM उन निर्देशों को फिर से क्यों करेगा? –
@ElliottFrisch हाय। उन सटीक मानों का उपयोग यह स्पष्ट करने के लिए किया जाता है कि ए, बी, और सी एकान्त रूप से बढ़ नहीं सकते हैं; 10, 20 और 15 होने की आवश्यकता नहीं है :-P –
@ElliottFrisch मुझे यहां क्या चिंता है, क्या यह गारंटी है कि इन 3 System.currentTimeMillis() को JVM द्वारा पुन: व्यवस्थित नहीं किया जाएगा? –