निर्माता-उपभोक्ता पैटर्न की मेरी समझ यह है कि इसे निर्माता और उपभोक्ता के बीच साझा की गई कतार का उपयोग करके कार्यान्वित किया जा सकता है। निर्माता एक साझा कतार में काम प्रस्तुत करता है, उपभोक्ता इसे पुनर्प्राप्त करता है और इसे संसाधित करता है। इसे निर्माता द्वारा सीधे उपभोक्ता को प्रस्तुत किया जा सकता है (उपभोक्ता की निष्पादक सेवा को सीधे प्रस्तुत करने वाले निर्माता धागे)।निर्माता उपभोक्ता - निष्पादक का उपयोग करना .newFixedThreadPool
अब, मैं एक्जिक्यूटर्स क्लास को देख रहा हूं जो थ्रेड पूल के कुछ सामान्य कार्यान्वयन प्रदान करता है। Spec के अनुसार, newFixedThreadPool विधि, "एक साझा असंबद्ध कतार को संचालित करने वाले थ्रेड की एक निश्चित संख्या का पुन: उपयोग करती है"। वे किस कतार के बारे में बात कर रहे हैं?
यदि निर्माता सीधे उपभोक्ता को कोई कार्य सबमिट करता है, तो क्या यह निष्पादक सेवा की आंतरिक कतार है जिसमें Runnables की सूची शामिल है?
या क्या यह मध्यवर्ती कतार है, यदि निर्माता एक साझा कतार में सबमिट करता है?
क्या मुझे पूरा बिंदु याद आ रहा है, लेकिन क्या कोई स्पष्टीकरण देगा?
बस स्पष्ट करने के लिए: 'ExecutorService' सिर्फ एक इंटरफेस है। आप * एक ऐसे वर्ग के साथ * निष्पादक सेवा 'को कार्यान्वित कर सकते हैं जो एक ही थ्रेड में जितनी जल्दी हो सके, प्रत्येक रननेबल को चलाता है (और मेरा मानना है कि' java.util.concurrent' पैकेज में कोई कार्यान्वयन है जो बस करता है) । लेकिन * अभ्यास में *, अधिकांश निष्पादक सेवा कार्यान्वयन एक पूर्ण निर्माता-उपभोक्ता कार्यान्वयन हैं। –
आप बिल्कुल सही हैं, 'एक्जिक्यूटर्स सेवा' से मेरा मतलब है "* एक्जिक्यूटर्स.न्यूफिक्स्ड थ्रेडपूल() 'द्वारा लौटाई गई चीज़' जो 'एक्जिक्यूटर्स सर्विस' * लागू करती है। स्पष्टीकरण के लिए धन्यवाद। –
धन्यवाद दोस्तों। इसलिए, यदि मैं newFixedThreadPool (8) का उपयोग कर निष्पादक सेवा बनाता हूं और उसके बाद 1000 रनने योग्य कार्यों को निष्पादित करता हूं, तो कृपया परिदृश्य की मेरी समझ की पुष्टि करें: 1. अधिकतम 8 धागे पर 2 प्रसंस्करण की शुरुआत में बनाया जाएगा , जबकि 8 धागे व्यस्त हैं, 992 कार्यों को आंतरिक कतार में आयोजित किया जाएगा 3. इसके अलावा, क्योंकि यह एक असंबद्ध कतार है, निष्पादक सेवा में सबमिट किए जा सकने वाले कार्यों की संख्या पर कोई ऊपरी सीमा नहीं है। उपरोक्त परिदृश्य में क्या प्रभाव होगा यदि मैं एक बाध्य कतार के साथ एक एक्जिक्यूटर्स सेवा बनाता हूं? क्या यह बेहतर प्रदर्शन करेगा? धन्यवाद, ओ – Oxford