ThreadGroup creates a group of threads. It offers a convenient way to manage groups of threads as a unit. This is particularly valuable in situation in which you want to suspend and resume a number of related threads.
- The thread group form a tree in which every thread group except the initial thread group has a parent.
- A thread is allowed to access information about its own thread group but not to access information about its thread group’s parent thread group or any other thread group.
Constructors:
-
public ThreadGroup(String name): Constructs a new thread group. The parent of this new group is the thread group of the currently running thread.
Throws: SecurityException - if the current thread cannot create a thread in the specified thread group.
-
public ThreadGroup(ThreadGroup parent, String name): Creates a new thread group. The parent of this new group is the specified thread group.
Throws: NullPointerException - if the thread group argument is null. SecurityException - if the current thread cannot create a thread in the specified thread group.
Methods
-
int activeCount(): This method returns the number of threads in the group plus any group for which this thread is parent.
Syntax: public int activeCount() Returns: This method returns an estimate of the number of active threads in this thread group and in any other thread group that has this thread group as an ancestor. Exception: NA
// Java code illustrating activeCount() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <1000; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[]){// creating the thread groupThreadGroup gfg =newThreadGroup("parent thread group");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// checking the number of active threadSystem.out.println("number of active thread: "+ gfg.activeCount());}}chevron_rightfilter_noneOutput:
Starting one Starting two number of active thread: 2
-
int activeGroupCount(): This method returns an estimate of the number of active groups in this thread group.
Syntax: public int activeGroupCount(). Returns: Returns the number of groups for which the invoking thread is parent. Exception: NA.
// Java code illustrating activeGroupCount() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <1000; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException{// creating the thread groupThreadGroup gfg =newThreadGroup("gfg");ThreadGroup gfg_child =newThreadGroup(gfg,"child");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// checking the number of active threadSystem.out.println("number of active thread group: "+ gfg.activeGroupCount());}}chevron_rightfilter_noneOutput:
Starting one Starting two number of active thread group: 2 one finished executing two finished executing
-
void checkAccess(): Causes the security manager to verify that the invoking thread may access and/ or change the group on which checkAccess() is called.
Syntax: final void checkAccess(). Returns: NA. Exception: NA.
// Java code illustrating checkAccess() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <1000; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");gfg.checkAccess();System.out.println(gfg.getName() +" has access");gfg_child.checkAccess();System.out.println(gfg_child.getName() +" has access");}}chevron_rightfilter_noneOutput:
Starting one Starting two Parent thread has access child thread has access one finished executing two finished executing
-
void destroy(): Destroys the thread group and any child groups on which it is called.
Syntax: public void destroy(). Returns: NA. Exception: IllegalThreadStateException - if the thread group is not empty or if the thread group has already been destroyed. SecurityException - if the current thread cannot modify this thread group.
// Java code illustrating destroy() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// block until other thread is finishedt1.join();t2.join();// destroying child threadgfg_child.destroy();System.out.println(gfg_child.getName() +" destroyed");// destroying parent threadgfg.destroy();System.out.println(gfg.getName() +" destroyed");}}chevron_rightfilter_noneOutput:
Starting one Starting two child thread destroyed Parent thread destroyed
-
int enumerate(Thread group[]): The thread that comprise the invoking thread group are put into the group array.
Syntax: public int enumerate(Thread group[]). Returns: the number of threads put into the array. Exception: SecurityException - if the current thread does not have permission to enumerate this thread group.
// Java code illustrating enumerate() method.importjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex) {System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// returns the number of threads put into the arrayThread[] group =newThread[gfg.activeCount()];intcount = gfg.enumerate(group);for(inti =0; i < count; i++){System.out.println("Thread "+ group[i].getName() +" found");}}}chevron_rightfilter_noneOutput:
Starting one Starting two Thread one found Thread two found one finished executing two finished executing
-
int enumerate(Thread[] group, boolean recurse): The threads that comprise the invoking thread group are put into the group array. If all is true, then threads in all subgroups of the thread are also put into group.
Syntax: public int enumerate(Thread[] list, boolean recurse). Returns: the number of threads placed into the array. Exception: SecurityException - if the current thread does not have permission to enumerate this thread group.
// Java code illustrating enumerate(Thread[] group, boolean recurse)importjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// returns the number of threads put into the arrayThread[] group =newThread[gfg.activeCount()];intcount = gfg.enumerate(group,true);for(inti =0; i < count; i++){System.out.println("Thread "+ group[i].getName() +" found");}}}chevron_rightfilter_noneOutput:
Starting one Starting two Thread one found Thread two found one finished executing two finished executing
-
int enumerate(ThreadGroup[] group): The subgroups of the evoking thread group are put into the group array.
Syntax: public int enumerate(ThreadGroup[] group). Returns: the number of thread groups put into the array. Exception: SecurityException - if the current thread does not have permission to enumerate this thread group.
// Java code illustrating enumerate(ThreadGroup[] group) methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// returns the number of threads put into the arrayThreadGroup[] group =newThreadGroup[gfg.activeCount()];intcount = gfg.enumerate(group);for(inti =0; i < count; i++){System.out.println("ThreadGroup "+ group[i].getName() +" found");}}}chevron_rightfilter_noneOutput:
Starting one Starting two ThreadGroup child thread found two finished executing one finished executing
-
int enumerate(ThreadGroup[] group, boolean all): The subgroups of the invoking thread group are put into the group array. If all is true, then all subgroups of the subgroups(and so on) are also put into group.
Syntax: public int enumerate(ThreadGroup[] group, boolean all) Returns: the number of thread groups put into the array. Exception: SecurityException - if the current thread does not have permission to enumerate this thread group.
// Java code illustrating enumerate(ThreadGroup[] group, boolean all)importjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");// returns the number of threads put into the arrayThreadGroup[] group =newThreadGroup[gfg.activeCount()];intcount = gfg.enumerate(group,true);for(inti =0; i < count; i++){System.out.println("ThreadGroup "+ group[i].getName() +" found");}}}chevron_rightfilter_noneOutput:
Starting one Starting two ThreadGroup child thread found two finished executing one finished executing
-
int getMaxPriority(): Returns the maximum priority setting for the group.
Syntax: final int getMaxPriority(). Returns: the maximum priority that a thread in this thread group can have. Exception: NA.
// Java code illustrating getMaxPriority() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");// checking the maximum priority of parent threadSystem.out.println("Maximum priority of ParentThreadGroup = "+ gfg.getMaxPriority());NewThread t1 =newNewThread("one", gfg);System.out.println("Starting one");NewThread t2 =newNewThread("two", gfg);System.out.println("Starting two");}}chevron_rightfilter_noneOutput:
Maximum priority of ParentThreadGroup = 10 Starting one Starting two two finished executing one finished executing
-
String getName(): This method returns the name of the group.
Syntax: final String getName(). Returns: the name of this thread group. Exception: NA.
// Java code illustrating getName() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());}}chevron_rightfilter_noneOutput:
Starting one Starting two two finished executing one finished executing
-
ThreadGroup getParent(): Returns null if the invoking ThreadGroup object has no parent. Otherwise, it returns the parent of the invoking object.
Syntax: final ThreadGroup getParent(). Returns: the parent of this thread group. The top-level thread group is the only thread group whose parent is null. Exception: SecurityException - if the current thread cannot modify this thread group.
// Java code illustrating getParent() methodimportjava.lang.*;classNewThreadextendsThread {NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++) {try{Thread.sleep(10);}catch(InterruptedException ex) {System.out.println("Exception encounterted");}}System.out.println(Thread.currentThread().getName()+" finished executing");}}publicclassThreadGroupDemo {publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());// prints the parent ThreadGroup// of both parent and child threadsSystem.out.println("ParentThreadGroup for "+ gfg.getName() +" is "+ gfg.getParent().getName());System.out.println("ParentThreadGroup for "+ gfg_child.getName()+" is "+ gfg_child.getParent().getName());}}chevron_rightfilter_noneOutput:
Starting one Starting two ParentThreadGroup for Parent thread is main ParentThreadGroup for child thread is Parent thread one finished executing two finished executing
-
void interrupt(): Invokes the interrupt() methods of all threads in the group.
Syntax: public final void interrupt(). Returns: NA. Exception: SecurityException - if the current thread is not allowed to access this thread group or any of the threads in the thread group.
// Java code illustrating interrupt() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());// interrupting thread groupgfg.interrupt();}}chevron_rightfilter_noneOutput:
Starting one Starting two Thread two interrupted Thread one interrupted one finished executing two finished executing
-
boolean isDaemon(): Tests if this thread group is a daemon thread group. A daemon thread group is automatically destroyed when its last thread is stopped or its last thread group is destroyed.
Syntax: public final boolean isDaemon(). Returns: true if the group is daemon group. Otherwise it returns false. Exception: NA.
// Java code illustrating isDaemon() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());if(gfg.isDaemon() ==true)System.out.println("Group is Daemon group");elseSystem.out.println("Group is not Daemon group");}}chevron_rightfilter_noneOutput:
Starting one Starting two Group is not Daemon group two finished executing one finished executing
-
boolean isDestroyed(): This method tests if this thread group has been destroyed.
Syntax: public boolean isDestroyed(). Returns: true if this object is destroyed. Exception: NA.
// Java code illustrating isDestroyed() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException, Exception{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());if(gfg.isDestroyed() ==true)System.out.println("Group is destroyed");elseSystem.out.println("Group is not destroyed");}}chevron_rightfilter_noneOutput:
Starting one Starting two Group is not destroyed one finished executing two finished executing
-
void list(): Displays information about the group.
Syntax: public void list(). Returns: NA. Exception: NA.
// Java code illustrating list() method.importjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException, Exception{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());// listing contents of parent ThreadGroupSystem.out.println("\nListing parentThreadGroup: "+ gfg.getName()+":");// prints information about this thread group// to the standard outputgfg.list();}}chevron_rightfilter_noneOutput:
Starting one Starting two Listing parentThreadGroup: Parent thread: java.lang.ThreadGroup[name=Parent thread, maxpri=10] Thread[one, 5, Parent thread] Thread[two, 5, Parent thread] java.lang.ThreadGroup[name=child thread, maxpri=10] one finished executing two finished executing -
boolean parentOf(ThreadGroup group): This method tests if this thread group is either the thread group argument or one of its ancestor thread groups.
Syntax: final boolean parentOf(ThreadGroup group). Returns: true if the invoking thread is the parent of group(or group itself). Otherwise, it returns false. Exception: NA.
// Java code illustrating parentOf() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException, Exception{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());// checking who is parent threadif(gfg.parentOf(gfg_child))System.out.println(gfg.getName() +" is parent of "+gfg_child.getName());}}chevron_rightfilter_noneOutput:
Starting one Starting two Parent thread is parent of child thread two finished executing one finished executing
-
void setDaemon(boolean isDaemon): This method changes the daemon status of this thread group. A daemon thread group is automatically destroyed when its last thread is stopped or its last thread group is destroyed.
Syntax: final void setDaemon(boolean isDaemon). Returns: If isDaemon is true, then the invoking group is flagged as a daemon group. Exception: SecurityException - if the current thread cannot modify this thread group.
// Java code illustrating setDaemon() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException, Exception{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");// daemon status is set to truegfg.setDaemon(true);// daemon status is set to truegfg_child.setDaemon(true);NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());if(gfg.isDaemon() && gfg_child.isDaemon())System.out.println("Parent Thread group and "+"child thread group"+" is daemon");}}chevron_rightfilter_noneOutput:
Starting one Starting two Parent Thread group and child thread group is daemon one finished executing two finished executing
-
void setMaxPriority(int priority): Sets the maximum priority of the invoking group to priority.
Syntax: final void setMaxPriority(int priority). Returns: NA. Exception: SecurityException - if the current thread cannot modify this thread group.
// Java code illustrating setMaxPriority() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" [priority = "+Thread.currentThread().getPriority() + "]finished executing.");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException, Exception{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");gfg.setMaxPriority(Thread.MAX_PRIORITY -2);gfg_child.setMaxPriority(Thread.NORM_PRIORITY);NewThread t1 =newNewThread("one", gfg);t1.setPriority(Thread.MAX_PRIORITY);System.out.println("Starting "+ t1.getName());t1.start();NewThread t2 =newNewThread("two", gfg_child);t2.setPriority(Thread.MAX_PRIORITY);System.out.println("Starting "+ t2.getName());t2.start();}}chevron_rightfilter_noneOutput:
Starting one Starting two two [priority = 5] finished executing. one [priority = 8] finished executing.
-
String toString(): This method returns a string representation of this Thread group.
Syntax: public String toString(). Returns: String equivalent of the group. Exception: SecurityException - if the current thread cannot modify this thread group.
// Java code illustrating toString() methodimportjava.lang.*;classNewThreadextendsThread{NewThread(String threadname, ThreadGroup tgob){super(tgob, threadname);start();}publicvoidrun(){for(inti =0; i <10; i++){try{Thread.sleep(10);}catch(InterruptedException ex){System.out.println("Thread "+ Thread.currentThread().getName()+" interrupted");}}System.out.println(Thread.currentThread().getName() +" finished executing");}}publicclassThreadGroupDemo{publicstaticvoidmain(String arg[])throwsInterruptedException,SecurityException, Exception{// creating the thread groupThreadGroup gfg =newThreadGroup("Parent thread");ThreadGroup gfg_child =newThreadGroup(gfg,"child thread");// daemon status is set to truegfg.setDaemon(true);// daemon status is set to truegfg_child.setDaemon(true);NewThread t1 =newNewThread("one", gfg);System.out.println("Starting "+ t1.getName());NewThread t2 =newNewThread("two", gfg);System.out.println("Starting "+ t2.getName());// string equivalent of the parent groupSystem.out.println("String equivalent: "+ gfg.toString());}}chevron_rightfilter_noneOutput:
Starting one Starting two String equivalent: java.lang.ThreadGroup[name=Parent thread, maxpri=10] one finished executing two finished executing
This article is contributed by Abhishek Verma. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.
Recommended Posts:
- Java.lang.Class class in Java | Set 1
- Java.lang.Class class in Java | Set 2
- Using predefined class name as Class or Variable name in Java
- Java.util.TimeZone Class (Set-2) | Example On TimeZone Class
- Implement Pair Class with Unit Class in Java using JavaTuples
- Implement Triplet Class with Pair Class in Java using JavaTuples
- Implement Quintet Class with Quartet Class in Java using JavaTuples
- Implement Quartet Class with Triplet Class in Java using JavaTuples
- Implement Octet Class from Septet Class in Java using JavaTuples
- Implement Ennead Class from Octet Class in Java using JavaTuples
- Implement Sextet Class from Quintet Class in Java using JavaTuples
- Implement Septet Class from Sextet Class in Java using JavaTuples
- Implement Decade Class from Ennead Class in Java using JavaTuples
- Difference between Abstract Class and Concrete Class in Java
- In Java, Can we call the main() method of a class from another class?
- Does JVM create object of Main class (the class with main())?
- Inner Class And Anonymous Inner Class that Implements Runnable | Concurrent Programming Approach 3
- Java.util.BitSet class methods in Java with Examples | Set 2
- Java.Lang.Float class in Java
- Java.io.BufferedInputStream class in Java

