मुझे कतार सर्वर से डेटा मिल रहा है और मुझे इसे संसाधित करने और एक पावती भेजने की आवश्यकता है। कुछ इस तरह:यदि मैं बहुत अधिक डेटा पर काम करने की ज़रूरत है तो मैं ThreadPoolExecutor कमांड कैसे कर सकता हूं?
while (true) {
queueserver.get.data
ThreadPoolExecutor //send data to thread
queueserver.acknowledgement
मैं पूरी तरह से समझ में नहीं आता क्या धागे में क्या होता है, लेकिन मैं इस कार्यक्रम डेटा, तुरंत हो जाता है यह धागा भेजता है और फिर इसे स्वीकार करता है लगता है। तो यहां तक कि यदि मेरे पास प्रत्येक कतार की सीमा है तो केवल 200 अनजान आइटम हो सकते हैं, यह केवल उतना तेज़ हो जाएगा जितना इसे प्राप्त हो सकता है। यह एक अच्छा है जब मैं एक सर्वर पर एक प्रोग्राम लिखता हूं, लेकिन यदि मैं एकाधिक श्रमिकों का उपयोग कर रहा हूं तो यह एक मुद्दा बन जाता है क्योंकि थ्रेड कतार में वस्तुओं की मात्रा उसके काम के प्रतिबिंब नहीं है बल्कि यह कितनी तेज़ है कतार सर्वर से आइटम प्राप्त कर सकते हैं।
क्या थ्रेड कतार काम से भरा हुआ है, तो प्रोग्राम को प्रतीक्षा करने के लिए मैं कुछ भी कर सकता हूं?
धन्यवाद ग्रे। बस स्पष्ट करने के लिए इसका मतलब है कि अगर मैंने कतार में 200 आइटम रखे हैं, तो यह तब तक अनुमति नहीं देगा जब तक कि उस कतार से काम कम नहीं हो जाता? और अगर ऐसा होता है तो यह उस आदेश पर इंतजार कर रहा है जिसका उपयोग मैं थ्रेड में सबमिट करने के लिए कर रहा हूं जब तक कि ब्लॉकिंग कतार में भेजने के लिए कोई कमरा न हो? –
यदि आप 'BlockingQueue' @learningJava पर 'put()' का उपयोग करते हैं, तो हाँ, कतार पूर्ण होने पर यह अवरुद्ध हो जाएगा और फिर कतार आकार घटने पर जारी रहेगा। – Gray
+1: एक अन्य विकल्प है कि अस्वीकृत एक्सेक्यूशन हैंडलर इसके बजाय कार्य चलाएं। i.e. 'r.run();' –