
- 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 Thread enumerate() Method
Description
The Java Thread enumerate() method copies into the specified array every active thread in the current thread's thread group and its subgroups. It calls the enumerate method of the current thread's thread group with the tarray argument.
Declaration
Following is the declaration for java.lang.Thread.enumerate() method
public static int enumerate(Thread[] tarray)
Parameters
tarray − This is an an array of Thread objects to copy to.
Return Value
This method returns the number of threads put into the array
Exception
SecurityException − if a security manager exists and its checkAccess method doesn't allow the operation.
Example: Creating array of Threads in Single Threaded Environment
The following example shows the usage of Java Thread enumerate() method. In this program, we've created a class ThreadDemo. In main method, current thread is retrieved using currentThread() method and it is printed. Using activeCount(), the count of active thread is retrieved and printed. As next, we've created an array of active threads using enumerate() method and iterated them to print on console.
package com.tutorialspoint; public class ThreadDemo { public static void main(String[] args) { Thread t = Thread.currentThread(); t.setName("Admin Thread"); // prints the current thread System.out.println("Thread = " + t); int count = Thread.activeCount(); System.out.println("currently active threads = " + count); Thread th[] = new Thread[count]; // returns the number of threads put into the array Thread.enumerate(th); // prints active threads for (int i = 0; i < count; i++) { System.out.println(i + ": " + th[i]); } } }
Output
Let us compile and run the above program, this will produce the following result −
Thread = Thread[Admin Thread,5,main] currently active threads = 1 0: Thread[Admin Thread,5,main]
Example: Getting Array of Threads in Multi-Threaded Program
The following example shows the usage of Java Thread activeCount() method. In this program, we've created a thread class ThreadDemo by implementing Runnable interface. In constructor, current thread is retrieved using currentThread() method and a new thread is created using new Thread. Using activeCount(), the count of active thread is retrieved and printed.
package com.tutorialspoint; public class ThreadDemo implements Runnable { ThreadDemo() { // main thread Thread currThread = Thread.currentThread(); // thread created Thread t = new Thread(this, "Admin Thread"); // this will call run() function t.start(); int count = Thread.activeCount(); System.out.println("currently active threads = " + count); Thread th[] = new Thread[count]; // returns the number of threads put into the array Thread.enumerate(th); // prints active threads for (int i = 0; i < count; i++) { System.out.println(i + ": " + th[i]); } } public void run() { System.out.println("This is run() method"); } public static void main(String args[]) { new ThreadDemo(); } }
Output
Let us compile and run the above program, this will produce the following result −
This is run() method currently active threads = 2 0: Thread[#1,main,5,main] 1: null