2012-03-31 13 views
5
/** 
    * Atomically update Java variable to <tt>x</tt> if it is currently 
    * holding <tt>expected</tt>. 
    * @return <tt>true</tt> if successful 
    */ 
    public final native boolean compareAndSwapObject(Object o, long offset, 
                Object expected, 
                Object x); 

1) "स्थिति == अपेक्षित" स्थिति में "ऑफसेट" स्थिति में "ओ" के मान को "ओ" के मान को कैसे सेट किया जाए?असुरक्षित सूर्य वर्ग कार्यान्वयन

2) जब हम सिंक्रनाइज़ विधि या सिंक्रनाइज़ ब्लॉक का उपयोग करते हैं तो वे ऑब्जेक्ट को "लॉक" कैसे करते हैं? मुझे यह जानकर उत्सुकता है कि हुड के नीचे क्या चल रहा है।

+0

मुझे लगता है कि आपको पाठ्यपुस्तक की आवश्यकता होगी। –

+0

@ TomHawtin-tackline क्या आप मुझे/कोई पाठ्यपुस्तक नाम दे सकते हैं? –

+3

दरअसल, मुझे संदेह है कि एक पाठ्यपुस्तक है जो विषय को सटीक/गहराई से कवर करती है। यह उस तरह की चीज है जिसे आप सड़क पर उठाते हैं। –

उत्तर

4
  1. चूंकि यह मूल विधि है, वे लक्ष्य मंच द्वारा जो भी पेशकश की जाती हैं, वे वापस आ जाएंगे। आईआईआरसी, "तुलना और स्वैप" एमआईपीएस और एसपीएआरसी पर 10 साल पहले प्रोसेसर कमांड के रूप में मौजूद था।

  2. वे वस्तु

1

अपने प्रश्न का सटीक उत्तर कार्यान्वयन निर्भर है पर ताला प्राप्त करने के लिए पर्दे के पीछे 1 की तरह कुछ का उपयोग करें।

परमाणु पैकेज दस्तावेज़ों के लिए यहाँ देखें: तुलना और स्वैप की तरह http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/atomic/package-summary.html

कार्यान्वयन आमतौर पर उपयोग किया मशीन-स्तरीय परमाणु निर्देश।

2

हाँ, compareAndSwapObject कॉल या तो देशी विधि कॉल या इनलाइन विस्तार में अनुवाद करता है जो मूल हार्डवेयर सुविधाओं का उपयोग करके तुलना-और-स्वैप करता है।

synchronized कीवर्ड के कार्यान्वयन के रूप में, किसी भी तकनीक का उपयोग किया जा सकता है, लेकिन वे सभी तुलनात्मक रूप से तुलना-और-स्वैप के समान होते हैं।

संबंधित मुद्दे