Java Thread enumerate()方法

2019-10-16 22:24:45

Thread類的enumerate()方法用於將每個活動執行緒的執行緒組及其子組複製到指定的陣列中。 此方法使用tarray引數呼叫enumerate方法。

此方法使用activeCount方法來估計陣列應該有多大。 如果陣列的長度太短而無法容納所有執行緒,則會以靜默方式忽略額外的執行緒。

語法

public static int enumerate(Thread[] tarray)

引數

  • tarray :此方法是要複製到的Thread物件陣列。

返回
此方法返回放入陣列的執行緒數。

範例

public class JavaEnumerateExp extends Thread   
{  
    JavaEnumerateExp(String threadname, ThreadGroup tg)  
    {  
        super(tg, threadname);  
        start();  
    }  
    public void run()  
    {  
        for (int i = 0; i < 5; i++)   
        {  
            try  
            {  
                Thread.sleep(10);  
            }     
            catch (InterruptedException ex) {  
                System.out.println("Exception encounterted");}  
        }  
        System.out.println(Thread.currentThread().getName() +" completed executing");  
    }  
    public static void main(String arg[]) throws InterruptedException,SecurityException  
    {  
        // creating the ThreadGroup  
        ThreadGroup g1 = new ThreadGroup("Parent thread");  
        // creating a child ThreadGroup for parent ThreadGroup  
        ThreadGroup g2 = new ThreadGroup(g1, "child thread");  

        // creating a thread   
        JavaEnumerateExp t1 = new JavaEnumerateExp("Thread-1", g1);  
        System.out.println("Starting of Thread-1");  
        // creating another thread   
        JavaEnumerateExp t2 = new JavaEnumerateExp("Thread-2", g1);  
        System.out.println("Starting of Thread-2");  

        // returns the number of threads put into the array  
        Thread[] group = new Thread[g1.activeCount()];  
        int count = g1.enumerate(group);  

        // prints active threads  
        for (int i = 0; i < count; i++)   
        {  
            System.out.println(group[i].getName() + " found");  
        }  
    }  
}

執行上面範例程式碼,得到以下結果:

Starting of Thread-1
Starting of Thread-2
Thread-1 found
Thread-2 found
Thread-1 completed executing
Thread-2 completed executing