Java ThreadGroup: इस Class का प्रयोग Threads के एक पूरे Group को एक Single Unit की तरह Use करने के लिए किया जाता है। ये Class हमें Threads के एक समूह के विभिन्न Threads के Execution की Series को Control करने का एक तरीका प्रदान करता है।
उदाहरण के लिए ThreadGroup Class किसी Threads के पूरे एक Group को Control करने के लिए हमें stop(), suspend() और resume() Methods Provide करता है। एक ThreadGroup में कोई दूसरा ThreadGroup भी हो सकता है।
यानी एक ThreadGroup में हम अन्य ThreadGroup की Nesting भी कर सकते हैं। एक Individual Thread के पास उसके Immediate ThreadGroup को Access करने की Ability होती है, लेकिन वह Thread अपने Parent ThreadGroup को Access नहीं कर सकता है।
Threads की Grouping करना इसलिए महत्वपूर्ण होता है क्योंकि ये हमें कई बार एक Single Entity के रूप में एक से ज्यादा Threads को Handle करने की सुविधा देता है। उदाहरण के लिए ThreadGroup Class में suspend() व resume() जैसे Methods होते हैं, जिनका प्रयोग किसी ThreadGroup के सभी Threads को Suspend या Resume करने के लिए किया जा सकता है।
जावा में जितने भी Threads Create किए जाते हैं, वे सभी Threads किसी ना किसी Group से सम्बंधित होते हैं। अभी तक हमने जितने भी Program देखे हैं, उनमें किसी भी Program में हमने किसी Thread को किसी भी Group से Associate नहीं किया है। जब हम किसी Thread को किसी भी Group से Associate नहीं करते हैं, तो हम जिस Thread में किसी Thread को Create करते हैं, उसी Current Thread जिस Group का होता है, उसी Group में हमारा नया Thread Add हो जाता है। Current Thread वह Thread होता है, जहां हमारा नया Thread Create होता है।
कुछ परिस्थितियों में ऐसा भी सम्भव होता है कि जहां नया Thread Create हो रहा है, वहां कोई Current Thread ना हो। जब ऐसी परिस्थिति होती है तब जावा का Runtime System Create होने वाले Thread को उसके Default Thread Group में Add कर देता है। इस Default Thread Group का नाम Main होता है।
Thread Create करके हम उस Thread को किसी Appropriate Group से Associate कर सकते हैं। हम किसी भी Thread को केवल एक बार ही किसी Group में Add कर सकते हैं। यदि हमने किसी Thread को किसी Group में Add कर दिया है तो हम उस Thread के Group को किसी भी तरह से Change नहीं कर सकते हैं।
किसी Thread को किस Thread Group में Add करना है, इसके लिए Thread Class हमें निम्नानुसार तीन Constructors Provide करता है, जिनका प्रयोग करके हम किसी Thread को किसी अमुक Group में Add कर सकते हैं। ये Constructors निम्नानुसार हैं:
Thread(ThreadGroup, String)
Thread(ThreadGroup, Runnable)
Thread(ThreadGroup, Runnable, String)
इन तीनों Constructor में पहले Argument के रूप में हमें एक ThreadGroup प्रकार का Object Pass करना होता है। पहला Constructor एक String Parameter भी लेता है, जो कि Thread के नाम को Represent करने के लिए Use किया जाता है।
अगले दो Constructors में दूसरे Argument के रूप में हमें एक Runnable Object का Reference देना होता है, जो कि उस Class का Object होता है, जिसमें Runnable Interface को Implement किया गया है। तीसरे Constructor में तीसरे Argument के रूप में हम ThreadGroup में Add किए जा रहे Runnable Object का नाम दे सकते हैं।
इससे पहले कि हम कोई Thread Create करें, हमें ThreadGroup Class का एक Object Create करना होता है। ThreadGroup Class में दो Constructor Define किए गए हैं जो निम्नानुसार होते हैं:
ThreadGroup(String name)
ThreadGroup(ThreadGroup parent, String name)
पहला Constructor Specify किए गए नाम का एक Empty ThreadGroup Object Create करता है। दूसरा Constructor भी यही काम करता है, लेकिन Create होने वाले नए ThreadGroup को Specify किए गए parent ThreadGroup में Place करता है। ये Constructor हमें एक ThreadGroup में दूसरा ThreadGroup Nest करने की सुविधा देता है। हम निम्नानुसार एक ThreadGroup Create करके उसमें नए ThreadGroup को Nest कर सकते हैं:
ThreadGroup group = new ThreadGroup(“Parent Thread”); Thread t1 = new Thread(group, "Child Thread 1"); Thread t2 = new Thread(group, " Child Thread 2"); t1.start(); t2.start(); . . . group.sleep(100); . . . group.suspend(); . . . group.resume();
ThreadGroup Create होने के बाद हम हर Thread को Create करके इस ThreadGroup Object में Pass कर सकते हैं। ऐसा करने पर विभिन्न Threads ThreadGroup के Member बन जाते हैं। फिर हर Thread को उनके start() Method को Call करके Start किया जाता है।
ThreadGroup Object में Stored सभी Threads को हम एक साथ Start नहीं कर सकते हैं। लेकिन किसी ThreadGroup के विभिन्न Threads को हम एक साथ Sleep Mode में या Suspend Mode में भेज सकते हैं और सभी Threads को एक साथ Resume कर सकते हैं।
कोई Thread किस ThreadGroup का सदस्; है, ये जानने के लिए हम getThreadGroup() Method का प्रयोग कर सकते हैं। ये Method उस ThreadGroup Object को Return करता है, जिससे कोई Thread Belong करता है। फिर हम getName() Method का प्रयोग करके उसके ThreadGroup Object का नाम प्राप्त कर सकते हैं। निम्न Code Segment बताता है कि हम किस प्रकार से किसी ThreadGroup का नाम Print कर सकते हैं:
ThreadGroup group = myThread.getThreadGroup();
System.out.println(group.getName());
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Java Programming Language in Hindi | Page: 682 | Format: PDF