मेरे पास एक बहु थ्रेडेड एप्लिकेशन है जिसमें एक निर्माता थ्रेड और कई उपभोक्ता धागे हैं। डेटा को साझा थ्रेड सुरक्षित संग्रह में संग्रहीत किया जाता है और बफर में पर्याप्त डेटा होने पर डेटाबेस में फ़्लश किया जाता है।मल्टीथ्रेडेड जावा एप्लिकेशन में डेटा बफरिंग
javadocs से-
BlockingQueue<E>
एक कतार है कि इसके साथ ही आपरेशन जब एक तत्व को पुन: प्राप्त कतार गैर खाली बनने के लिए, और अंतरिक्ष के लिए प्रतीक्षा कतार में उपलब्ध होने के लिए जब एक तत्व भंडारण इंतजार है कि समर्थन करता है ।
take()
इस कतार के सिर को पुनर्प्राप्त और हटा देता है, जब तक कोई तत्व उपलब्ध न हो जाए, तब तक आवश्यक हो।
मेरे सवालों -
- एक और संग्रह एक ई [] ले (पूर्णांक एन) विधि है कि है? यानी अवरुद्ध कतार एक तत्व उपलब्ध होने तक प्रतीक्षा करता है। मैं क्या चाहता हूं है कि इसे 100 या 200 तत्व उपलब्ध होने तक प्रतीक्षा करनी चाहिए।
- वैकल्पिक रूप से, क्या कोई और तरीका है जिसका उपयोग मैं मतदान के बिना समस्या का समाधान करने के लिए कर सकता हूं?
तत्वों प्रत्येक उपभोक्ता के लिए समान रूप से वितरित किया जाना चाहिए, या विधि ले करने के लिए पहले उपभोक्ता पहले 'n' तत्वों, दूसरा उपभोक्ता अगले' n' तत्वों, आदि मिलना चाहिए? – SimonC
क्या यह वाकई आप क्या करना चाहते हैं?यह उत्पादित होने के बीच लगभग मनमाने ढंग से बड़ी विलंबता पेश कर सकता है और डेटाबेस में फ़्लश किया जा रहा है यदि उत्पादन की दर कभी भी आपके द्वारा ट्यूनिंग समाप्त होने से परे धीमी हो जाती है। यदि आपको वास्तव में अपने सभी तर्कों पर इस बफरिंग को करने की ज़रूरत है तो शायद "जैसे ही मेरे पास एन तत्व हैं या एक्स एम पास हो गए हैं" की प्रतीक्षा करें " – DRMacIver
आप क्यों इंतजार करना चाहते हैं? क्यों न केवल 'नाली() 'का उपयोग करें? मैं आपके द्वारा उपलब्ध अधिकतम डेटा को अधिकतम कुछ लिखूंगा और मैं डेटा खोना नहीं चाहूंगा। –