मेरे प्रोग्राम में ओपनजीएल रेंडरिंग थ्रेड और डेटा संशोधन थ्रेड है। प्रतिपादन धागा डेटा को ArrayLists के एक गले में एक्सेस करता है, जबकि डेटा संशोधन धागा ArrayLists को ऑब्जेक्ट्स को हटा देता है, हटा देता है और जोड़ता है। थ्रेड प्रति सेकेंड 60 गुना अद्यतन करते हैं, और ऐरेलिस्टिस्ट मैनिपुएशन प्रोग्राम की बाधा है। मैंने सिंक ब्लॉक (सुपर धीमी), CopyOnWriteArrayLists (काफी धीमी), और प्रतिपादन धागे (तीन बुराइयों में से कम) में बफर ArrayLists बनाने की कोशिश की है। समवर्ती ArrayLists से अधिकतम दक्षता प्राप्त करने के लिए 'सर्वश्रेष्ठ' तरीका क्या है?जावा - एक ArrayList सिंक्रनाइज़ करने का सबसे प्रभावी तरीका क्या है?
उत्तर
सबसे अच्छा तंत्र जीएल थ्रेड और कतार संचालन में अपना काम निष्पादित करना है। यदि सूची तक पहुंचने वाला केवल एक धागा है, तो कोई समस्या नहीं है।
प्रोग्राम लॉजिक को ग्ल्रेड थ्रेड में माइग्रेट करना सबसे अच्छा क्यों है? –
आप जीएल राज्य के साथ मिल रहे हैं। जीएल थ्रेड में सभी राज्य मकिंग-के साथ किया जाना चाहिए। इतना ही आसान। –
मैंने अभी 3 दिनों पहले प्रोग्रामिंग जीएल प्रोग्रामिंग शुरू कर दी है। मैं जीएल राज्यों पर पढ़ूंगा। लेकिन जब भी जावा स्विंग था, तब भी समस्या का सार वही रहता है, नहीं? मैं इस के लिए एक जीएल विशिष्ट सवाल होने का इरादा नहीं था। –
List<YourObject> syncList = Collections.synchronizedList(yourList);
मैं इस समाधान के बारे में बेहद थक गया हूं। सबसे पहले, जब इटरेटर का उपयोग किया जाता है तो संग्रह मैन्युअल रूप से सिंक्रनाइज़ किया जाना चाहिए, और अन्य समस्याएं भी हो सकती हैं। मुझे लगता है कि यह प्रोग्राम तर्क के साथ एक समस्या है। –
यह आपको एक कंबल ऑल-या-कुछ भी समाधान प्रदान नहीं करता है, जहां सवाल – Yoni
-1 लॉक करने की उच्च ग्रॅन्युलरिटी प्राप्त करने की कोशिश करने के बारे में है, यह सवाल का जवाब नहीं देता है। वास्तव में, Collection.synchronized * का उपयोग करना हमेशा संग्रह पर सिंक्रनाइज़ करने के लिए सबसे सस्ता सबसे अक्षम और अक्सर गलत तरीका होता है। यद्यपि यह कभी-कभी "काम पूरा कर सकता है" यह केवल तब अच्छा होता है जब नौकरी वास्तव में कोई फर्क नहीं पड़ता। –
- 1. एनएसएससेट को सॉर्ट करने का सबसे प्रभावी तरीका क्या है?
- 2. क्या कोई विधि सिंक्रनाइज़ करने का एक ग्रोवी तरीका है?
- 3. जावा से SQL सर्वर में थोक-प्रतिलिपि करने का सबसे प्रभावी तरीका क्या है?
- 4. क्या एसिंक्रोनस विधि सिंक्रनाइज़ करने का एक सामान्य तरीका है?
- 5. "एचजी आयात" को संभालने का सबसे प्रभावी तरीका क्या है?
- 6. सूचियों को संयोजित करने का एक प्रभावी तरीका क्या है?
- 7. ब्लैकबेरी डिवाइस पर डीबग करने का सबसे प्रभावी तरीका?
- 8. ओपनजीएल में लाइनों का एक बड़ा सेट प्रबंधित करने का सबसे प्रभावी तरीका क्या है?
- 9. जावा में बाएं/दाएं-सबसे अनसेट बिट की अनुक्रमणिका ढूँढने का सबसे प्रभावी तरीका क्या है?
- 10. फोनेटिक खोज को लागू करने का सबसे प्रभावी तरीका
- 11. खाली ListBuffer बनाने का सबसे प्रभावी तरीका क्या है?
- 12. जावा में 'है' करने का सबसे आसान तरीका क्या है?
- 13. फ़ाइल पढ़ने का सबसे प्रभावी तरीका
- 14. जावा में एक ArrayList को पुनर्व्यवस्थित करने का सबसे अच्छा तरीका
- 15. एक MySQL कॉलम में पूर्णांक की सरणी को स्टोर करने का सबसे प्रभावी तरीका क्या है?
- 16. पायथन में एक पेड़ को पार करने का सबसे प्रभावी तरीका क्या है?
- 17. लौटाए गए सरणी को इंडेक्स करने का सबसे प्रभावी तरीका?
- 18. PHP में भाषा फ़ाइल करने का सबसे प्रभावी तरीका?
- 19. MySQL में यूआरएल स्टोर करने का सबसे प्रभावी तरीका?
- 20. एकाधिक समान वस्तुओं को आकर्षित करने का सबसे प्रभावी तरीका?
- 21. एसिंक्रोनस कार्य सिंक्रनाइज़ करने का सबसे अच्छा तरीका
- 22. CMSampleBuffer सामग्री को संशोधित करने का सबसे प्रभावी तरीका
- 23. जीसीडी के साथ फाइल कॉपी करने का सबसे प्रभावी तरीका?
- 24. वैक्टर को सब्सट्रेट करने का सबसे प्रभावी तरीका
- 25. घटनाओं की गणना करने के लिए सबसे प्रभावी तरीका है?
- 26. क्या मैप्ली समानांतर करने का कोई प्रभावी तरीका है?
- 27. स्ट्रीम से डेटा पढ़ने का सबसे प्रभावी तरीका
- 28. जावा में स्ट्रिंग को पार्स करने का एक प्रभावी तरीका क्या है?
- 29. क्या "निरंतर" ऑटो-फ़ोकस करने का कोई प्रभावी तरीका है?
- 30. जावा में 2 धागे सिंक्रनाइज़ करने का आसान तरीका?
आपको "ArrayLists की गड़गड़ाहट" के एल्गोरिदम और टोपोलॉजी के बारे में और बताना होगा। – jmg
क्या आपने 'ConcurrentHashMap' या' ConcurrentSkipListMap/Set' का लाभ उठाने पर विचार किया है? –
क्या आपने java.util.concurrent पैकेज को सिंक ब्लॉक के विकल्प के रूप में देखा है? – Yoni