थ्रेड समूहों मूल रूप से सुरक्षा उद्देश्यों के लिए एप्लेट अलग करने के लिए एक तंत्र के रूप में कल्पना कर रहे थे। वे वास्तव में इस वादा निभाया कभी नहीं, और उनकी सुरक्षा महत्व इस हद तक कि वे भी जावा सुरक्षा मॉडल [Gong03] पर मानक काम में उल्लेख नहीं कर रहे हैं करने के लिए कम हो गया है।
[...] एक विडंबनात्मक मोड़ में, ThreadGroup
एपीआई थ्रेड सुरक्षा स्टैंडपॉइंट से कमजोर है। एक सूत्र के समूह में सक्रिय धागे की एक सूची प्राप्त करने के लिए आपको आह्वान चाहिए enumerate
विधि है, जो एक पैरामीटर एक सरणी काफी बड़ी सभी सक्रिय सूत्र धारण करने के लिए के रूप में लेता है। activeCount
विधि एक धागा समूह में सक्रिय थ्रेड की संख्या देता है, लेकिन कोई गारंटी नहीं है कि इस गणना अभी भी सटीक हो जाएगा एक बार एक सरणी आबंटित की गई है और enumerate
विधि को पारित कर दिया है। यदि धागा गिनती बढ़ गया है और सरणी बहुत छोटा है, enumerate
विधि चुपचाप किसी भी धागे जिसके लिए सरणी में कोई जगह नहीं है पर ध्यान नहीं देता।
एपीआई कि एक धागा समूह के उपसमूहों को सूचीबद्ध करता है इसी तरह त्रुटिपूर्ण है। इन समस्याओं को नए तरीकों के योग के साथ तय किया जा सकता था, वहीं वे क्योंकि कोई वास्तविक जरूरत नहीं है, नहीं है : धागा समूहों अप्रचलित हैं। ThreadGroup.uncaughtException
विधि एक ही तरीका है जब एक धागा न आया हुआ अपवाद फेंक दिया नियंत्रण पाने के लिए किया गया था:
1.5 रिलीज से पहले, कि केवल ThreadGroup
एपीआई के साथ उपलब्ध था कार्यक्षमता में से एक छोटा सा टुकड़ा था। यह कार्यक्षमता उपयोगी है, उदाहरण के लिए, किसी अनुप्रयोग में स्टैक निशान को निर्देशित करने के लिए- विशिष्ट लॉग। रिलीज 1.5 के रूप में, हालांकि, समान कार्यक्षमता Thread
के setUncaughtExceptionHandler
विधि के साथ उपलब्ध है।
सारांशित करने के लिए, थ्रेड समूह उपयोगी कार्यक्षमता के रास्ते में अधिक प्रदान नहीं करते हैं, और उनके द्वारा प्रदान की जाने वाली अधिकांश कार्यक्षमता त्रुटिपूर्ण है। थ्रेड समूह को असफल प्रयोग के रूप में सबसे अच्छा देखा जाता है, और आपको केवल अस्तित्व को अनदेखा करना चाहिए। यदि आप धागे के तार्किक समूहों से संबंधित वर्ग को डिज़ाइन करते हैं, तो आप शायद थ्रेड पूल निष्पादकों (आइटम 68) का उपयोग करना चाहिए।
अरघ मुझे इससे नफरत है जब लोग कहते हैं कि "थ्रेड ग्रुप का उपयोग न करें"। यह कहने की तरह है "थ्रेड का उपयोग न करें"। थ्रेड में थ्रेड ग्रुप होता है, उसके आसपास कोई नहीं होता है, इसलिए जब तक कि आप कोई थ्रेड वाले प्रोग्राम नहीं चाहते हैं, ** आप थ्रेड ग्रुप ** का उपयोग कर रहे हैं। मैं मानता हूं कि हमें * प्रश्न, कैसे और क्यों * उनका उपयोग नहीं करने के लिए एक प्रश्न की आवश्यकता है। मार्क पीटर्स के कारणों के कारण –
+1, और क्योंकि यह प्रश्न ऐसा करने के लिए एक अच्छा वाहन है। –
यह समुदाय विकी क्यों है? –