मुझे जावा ब्लॉकिंगक्यूयू के समान डेटा संरचना में रूचि है, अपवाद के साथ कि यह कतार में ऑब्जेक्ट्स को बैच करने में सक्षम होना चाहिए। दूसरे शब्दों में, मैं निर्माता को कतार में वस्तुओं को रखने में सक्षम होना चाहता हूं, लेकिन उपभोक्ता ब्लॉक take()
पर है जब तक कि कतार एक निश्चित आकार (बैच आकार) तक पहुंच न जाए।बैचिंग के साथ जावा ब्लॉकिंगक्यूयू?
फिर, एक बार कतार बैच आकार तक पहुँच गया है, निर्माता put()
पर ब्लॉक चाहिए तक उपभोक्ता कतार में तत्वों (इस स्थिति में निर्माता फिर से उत्पादन शुरू कर देंगे और उपभोक्ता ब्लॉक बैच तक के सभी उपयोग किए गए फिर से पहुंचा है)।
क्या समान डेटा संरचना मौजूद है? या मुझे इसे लिखना चाहिए (जो मुझे कोई फर्क नहीं पड़ता), अगर मैं वहां कुछ भी कर रहा हूं तो मैं अपना समय बर्बाद नहीं करना चाहता हूं।
अद्यतन
शायद चीज़ें थोड़ी स्पष्ट करने के लिए:
स्थिति हमेशा इस प्रकार होगी। कतार में वस्तुओं को जोड़ने वाले कई उत्पादक हो सकते हैं, लेकिन कतार से सामान लेने वाले एक से अधिक उपभोक्ता कभी नहीं होंगे।
अब, समस्या यह है कि समानांतर और धारावाहिक में इन सेटअप में से कई हैं। दूसरे शब्दों में, निर्माता कई कतारों के लिए वस्तुओं का उत्पादन करते हैं, जबकि उपभोक्ता अपने अधिकार में उत्पादक भी हो सकते हैं। इसे उत्पादकों, उपभोक्ता-उत्पादकों और आखिरकार उपभोक्ताओं के निर्देशित ग्राफ के रूप में अधिक आसानी से सोचा जा सकता है।
कारण है कि उत्पादकों को कतार खाली होने तक ब्लॉक करना चाहिए (@ पीटर लॉरी) क्योंकि इनमें से प्रत्येक धागे में चल रहा है। यदि आप उन्हें बस अंतरिक्ष के रूप में उपलब्ध कराने के लिए छोड़ देते हैं, तो आप एक ऐसी स्थिति के साथ समाप्त हो जाएंगे जहां आपके पास बहुत सारी चीजें एक साथ कई प्रक्रियाओं को संसाधित करने की कोशिश कर रही हैं।
शायद इसे निष्पादन सेवा के साथ जोड़ना समस्या को हल कर सकता है?
मैं चाहता हूं कि निर्माता व्यस्त हो, जबकि उपभोक्ता व्यस्त हो। –
दिलचस्प, अधिकांश सिस्टम इससे बचने के लिए बहुत अधिक समय तक जाते हैं। ;) दूसरा सुझाव ठीक वही करेगा। यदि आप निर्माता को ब्लॉक करने के लिए चाहते हैं, तो आप एकाधिक धागे का उपयोग क्यों कर रहे हैं? "निर्माता" के लिए यह प्रोसेसर/उपभोक्ता होने के साथ आसान नहीं होगा, साथ ही आप उन्हें एक ही समय में चलाना नहीं चाहते हैं। –
कृपया मेरा अपडेट देखें। डिजाइन के लिए उत्पादकों को भी ब्लॉक की आवश्यकता होती है ताकि निष्पादन धागे की संख्या कम रखा जा सके। इसके अलावा, यह उत्पादकों और उपभोक्ताओं के बीच एक निर्भरता समस्या हल करता है। –