सिंक्रनाइज़ करने के लिए अन्य तरीका सिंक्रनाइज़ किए गए कीवर्ड का उपयोग करने के अलावा जावा में विधि सिंक्रनाइज़ कैसे करें?विधि
विधि
उत्तर
आप java.util.concurrent.locks
पैकेज इस्तेमाल कर सकते हैं:
Lock l = ...;
l.lock();
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
here देखें।
आप java.util.concurrent.locks पैकेज में प्रदान की लॉक कक्षाओं का उपयोग कर सकते
, विशेष रूप से लॉक इंटरफ़ेस देख http://download.oracle.com/javase/1.5.0/docs/api/index.html?java/util/concurrent/locks/Lock.html
आपको ठोस आवश्यकताओं पर निर्भर करता है।
उच्च स्तर सिंक्रनाइज़ेशन abstractions के लिए Java concurrent package देखें। ध्यान दें कि वे अभी भी synchronized
का उपयोग कर सकते हैं ...
यह निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। क्या आप जिज्ञासा से बाहर हैं या क्या कोई विशिष्ट कारण है?
यदि आप अपनी बहु-थ्रेडेड विधियों को तेज़ करने की कोशिश कर रहे हैं, तो विशिष्ट अनुभागों के आसपास सिंक्रनाइज़ करने या लॉक करने का प्रयास करें, या थ्रेडिंग समस्याओं को पूरी तरह से टालना; , साझा डेटा final
, स्थिर (गैर साझा) डेटा ThreadLocal
बनाने बनाने के लिए, java.util.concurrent.atomic
से परमाणु प्रकार का उपयोग, (java.util.concurrent
संकुल से) समवर्ती संग्रह का उपयोग आदि
Btw, java.util.concurrent
सामान के बाद Java5 में ही उपलब्ध है, हालांकि वहाँ के रूप में एक परियोजना जावा 1.4 के लिए बंदरगाह वापस करने के लिए संकुल http://backport-jsr166.sourceforge.net/
पर मैं किताब 'अभ्यास में जावा संगामिति' ब्रायन गोएज़ द्वारा सलाह देते हैं।
आप @SynchronizedProject Lombok से भी एक निजी क्षेत्र उत्पन्न करने के लिए उपयोग कर सकते हैं जो आपकी विधि के लिए लॉक के रूप में उपयोग किया जाएगा।
आप अपनी विधि के अंदर एक सिंक्रनाइज़ ब्लॉक का उपयोग कर सकते हैं। यह उपयोगी हो सकता है यदि आप एक ही कक्षा से संबंधित दो विधियों को अलग से सिंक्रनाइज़ करने के लिए चाहते हैं।
private Object guard = new ...
public method(){
synchronized(guard){
\\method body
...
}
}
हालांकि ज्यादातर मामलों में यह पता चलता है कि तुम सच में अपने वर्ग को तोड़ने चाहिए।
- 1. @parameters विधि @beforeclass विधि
- 2. विधि
- 3. विधि
- 4. विधि
- 5. विधि
- 6. विधि
- 7. विधि
- 8. विधि
- 9. विधि
- 10. विधि
- 11. विधि
- 12. विधि
- 13. विधि
- 14. विधि
- 15. विधि
- 16. विधि
- 17. सी/सी ++ सरल विधि विधि
- 18. एक स्थिर विधि (एक्सटेंशन विधि)
- 19. एएसपी.नेट एमवीसी रूटिंग विधि विधि
- 20. एक सी # विधि को पार करें और विधि निकाय विधि
- 21. स्थैतिक विधि बनाम ऑब्जेक्ट विधि का उपयोग
- 22. THREE.js: कॉलिंग लुकिंग के बाद विधि विधि
- 23. स्काला: निर्दिष्ट सार्वजनिक विधि संरक्षित विधि
- 24. रीबोन/अंडरस्कोर श्रृंखला विधि जहां विधि
- 25. सुपरक्लास :: विधि या यह-> विधि
- 26. अंडरस्कोर जेएस _.each विधि और _.invoke विधि
- 27. डिफ़ॉल्ट विधि बनाम PHP सार विधि
- 28. सी #, लंबी विधि या छोटी विधि लिखना?
- 29. PHPUnit स्टब विधि वापस लौटने विधि?
- 30. रेल: मॉडल उदाहरण विधि या सहायक विधि?
आप एक और समाधान क्यों ढूंढ रहे हैं? – MeBigFatGuy
iam वैकल्पिक (इसकी सीखने का हिस्सा) की तलाश में है – developer
जब आप किसी विधि पर सिंक्रनाइज़ करते हैं, तो वह ऑब्जेक्ट जिसे आप विधि को लॉक नहीं करते हैं। –