सबसे पहले, वहाँ बेवकूफ सवाल के रूप में ऐसी बात नहीं है ...
Semaphore से अधिक थ्रेड के लिए "अधिग्रहण" एक संसाधन अनुमति देता है। उन्हें जांचना चाहिए कि संसाधन उपलब्ध है या नहीं। यह प्रवाह नियंत्रण के लिए वाल्व की तरह है।
एक Lock विशेष उपयोग के लिए है। एक समय में केवल एक धागा।
ए ThreadPoolExecutor आपको थ्रेड की एक सीमित राशि का उपयोग करके कुछ कोड (रननेबल या कॉल करने योग्य वर्ग) चलाने की अनुमति देता है। आपको इसे स्वयं बनाने के बारे में परेशान करने की आवश्यकता नहीं है, यह आपके लिए जेएसई एपीआई में पहले ही लागू हो चुका है। आप कुछ सेफफोर्स और कतारों के साथ अपना खुद का काम कर सकते हैं ... लेकिन यदि आपके पास कोई अच्छा कारण नहीं है तो अपना समय बर्बाद न करें।
इमेजिंग आपको एक वेब सर्वर को लागू करना है जो पोर्ट 80 के लिए कुछ अनुरोध प्राप्त करता है। आप उसी पोर्ट का उपयोग नहीं करना चाहते हैं जो पूरे बंदरगाह को संसाधित करने के लिए इस बंदरगाह को सुन रहा है (यह संसाधनों का अपशिष्ट है ...) । आप अनुरोध के साथ ThreadPoolExecutor सौदे का उपयोग कर सकते हैं, इसे संसाधित कर सकते हैं और ग्राहक को जवाब दे सकते हैं। मौजूदा CPUs का लाभ लेने के लिए ThreadPoolExecutor को कॉन्फ़िगर किया जा सकता है: इस आर्किटेक्चर और इस कार्य के लिए खतरों की इष्टतम संख्या।
Concurrency in practice इस मामले पर आपके ज्ञान को बेहतर बनाने के लिए एक अच्छी किताब है।
मैं तुम्हें और खेद मेरी बुनियादी अंग्रेजी के लिए यह सहायता की उम्मीद है।
स्रोत
2013-01-22 10:59:11
जावा 7 डॉक्स के लिए इंगित करने के लिए धन्यवाद। मैं बस googled और लिंक खोलो। – mehta
Google लिंक के लिए थोड़ी देर पुराना है। यह अक्सर आपको 1.4.2 देता है। –
Google खोज: XXX के साथ "जावा 7 XXX" = कक्षा का नाम 99% समय काम करता है। उदाहरण के लिए: [जावा 7 सेमफोर के लिए खोजें] (https://www.google.co.uk/search?q=java+7+semaphore)। – assylias