- Java.lang - Home
- Java.lang - Boolean
- Java.lang - Byte
- Java.lang - Character
- Java.lang - Character.Subset
- Java.lang - Character.UnicodeBlock
- Java.lang - Class
- Java.lang - ClassLoader
- Java.lang - Compiler
- Java.lang - Double
- Java.lang - Enum
- Java.lang - Float
- Java.lang - InheritableThreadLocal
- Java.lang - Integer
- Java.lang - Long
- Java.lang - Math
- Java.lang - Number
- Java.lang - Object
- Java.lang - Package
- Java.lang - Process
- Java.lang - ProcessBuilder
- Java.lang - Runtime
- Java.lang - RuntimePermission
- Java.lang - SecurityManager
- Java.lang - Short
- Java.lang - StackTraceElement
- Java.lang - StrictMath
- Java.lang - String
- Java.lang - StringBuffer
- Java.lang - StringBuilder
- Java.lang - System
- Java.lang - Thread
- Java.lang - ThreadGroup
- Java.lang - ThreadLocal
- Java.lang - Throwable
- Java.lang - Void
- Java.lang Package Useful Resources
- Java.lang - Useful Resources
- Java.lang - Discussion
Java - ThreadGroup class
Introduction
The Java ThreadGroup class represents a set of threads. It can also include other thread groups. The thread groups form a tree in which every thread group except the initial thread group has a parent.
Class Declaration
Following is the declaration for java.lang.ThreadGroup class −
public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler
Class constructors
| Sr.No. | Constructor & Description |
|---|---|
| 1 |
ThreadGroup(String name) This constructs a new thread group. |
| 2 |
ThreadGroup(ThreadGroup parent, String name) This creates a new thread group. |
Class methods
| Sr.No. | Method & Description |
|---|---|
| 1 |
int activeCount()
This method returns an estimate of the number of active threads in this thread group. |
| 2 |
int activeGroupCount()
This method returns an estimate of the number of active groups in this thread group. |
| 3 |
void checkAccess()
This method determines if the currently running thread has permission to modify this thread group. |
| 4 |
void destroy()
This method Destroys this thread group and all of its subgroups. |
| 5 |
int enumerate(Thread[] list)
This method copies into the specified array every active thread in this thread group and its subgroups. |
| 6 |
int enumerate(Thread[] list, boolean recurse)
This method copies into the specified array every active thread in this thread group. |
| 7 |
int enumerate(ThreadGroup[] list)
This method copies into the specified array references to every active subgroup in this thread group. |
| 8 |
int enumerate(ThreadGroup[] list, boolean recurse)
This method copies into the specified array references to every active subgroup in this thread group. |
| 9 |
int getMaxPriority()
This method returns the maximum priority of this thread group. |
| 10 |
String getName()
This method returns the name of this thread group. |
| 11 |
ThreadGroup getParent()
This method returns the parent of this thread group. |
| 12 |
void interrupt()
This method interrupts all threads in this thread group. |
| 13 |
boolean isDaemon()
This method Tests if this thread group is a daemon thread group. |
| 14 |
boolean isDestroyed()
This method tests if this thread group has been destroyed. |
| 15 |
void list()
This method prints information about this thread group to the standard output. |
| 16 |
boolean parentOf(ThreadGroup g)
This method tests if this thread group is either the thread group argument or one of its ancestor thread groups. |
| 17 |
void setDaemon(boolean daemon)
This method changes the daemon status of this thread group. |
| 18 |
void setMaxPriority(int pri)
This method sets the maximum priority of the group. |
| 19 |
String toString()
This method returns a string representation of this Thread group. |
| 20 |
void uncaughtException(Thread t, Throwable e)
This method called by the Java Virtual Machine when a thread in this thread group stops because of an uncaught exception, and the thread does not have a specific Thread.UncaughtExceptionHandler installed. |
Methods inherited
This class inherits methods from the following classes −
- java.lang.Object
Using ThreadGroups to group threads Example
Following example showcases the usage of ThreadGroup in a multithreaded program.
package com.tutorialspoint;
public class ThreadGroupDemo implements Runnable {
public static void main(String[] args) {
ThreadGroupDemo tg = new ThreadGroupDemo();
tg.func();
}
public void func() {
try {
// create a parent ThreadGroup
ThreadGroup pGroup = new ThreadGroup("Parent ThreadGroup");
// create a child ThreadGroup for parent ThreadGroup
ThreadGroup cGroup = new ThreadGroup(pGroup, "Child ThreadGroup");
// create a thread
Thread t1 = new Thread(pGroup, this);
System.out.println("Starting " + t1.getName() + "...");
t1.start();
// create another thread
Thread t2 = new Thread(cGroup, this);
System.out.println("Starting " + t2.getName() + "...");
t2.start();
// display the number of active threads
System.out.println("Active threads in \"" + pGroup.getName()
+ "\" = " + pGroup.activeCount());
// block until the other threads finish
t1.join();
t2.join();
} catch (InterruptedException ex) {
System.out.println(ex.toString());
}
}
// implements run()
public void run() {
for(int i = 0;i < 1000;i++) {
i++;
}
System.out.println(Thread.currentThread().getName() + " finished executing.");
}
}
Let us compile and run the above program, this will produce the following result −
Starting Thread-0... Starting Thread-1... Thread-0 finished executing. Active threads in "Parent ThreadGroup" = 1 Thread-1 finished executing.