class ListThreads
{
public static void list(String label)
{
ThreadGroup group = Thread.currentThread().getThreadGroup();
int nActive = group.activeCount();
System.out.println("\n" + label + ":\n=====");
System.out.println("nActive = " + nActive);
Thread threads[] = new Thread[nActive];
int nThreads = group.enumerate(threads);
System.out.println("nThreads = " + nThreads);
for (int i = 0; i < nThreads; ++i)
System.out.println(threads[i]);
System.out.println();
}
public static void main(String[] args)
{
Thread t1 = new MyThread("DessertTopping", 200, 10);
Thread t2 = new MyThread("FloorWax", 300, 7);
list("Before");
t1.start();
t2.start();
list("During");
try
{
// Wait for worker threads to finish:
t1.join();
t2.join();
}
catch (InterruptedException x)
{
// won't happen
}
list("After");
}
}
/* Output:
Before:
=====
nActive = 3
nThreads = 1
Thread[main,5,main]
During:
=====
nActive = 3
nThreads = 3
Thread[main,5,main]
Thread[DessertTopping,5,main]
Thread[FloorWax,5,main]
DessertTopping
FloorWax
DessertTopping
FloorWax
DessertTopping
DessertTopping
FloorWax
DessertTopping
FloorWax
DessertTopping
DessertTopping
FloorWax
DessertTopping
FloorWax
DessertTopping
DessertTopping
FloorWax
After:
=====
nActive = 1
nThreads = 1
Thread[main,5,main]
*/
End of Listing