Как получить список мёртвых нитей в ThreadGroup?

Рейтинг: 1Ответов: 1Опубликовано: 01.12.2014

Собственно, как получить список мёртвых нитей в ThreadGroup?

Ответы

▲ 3Принят

Нашел другой способ. Выведет нить и ее состояние.

ThreadGroup tg = new ThreadGroup("MyThreadGroup");
Thread subThread = new Thread(tg, "New Thread - Inactive");
try {
    /* 
     * GETTING THREADS - PROBABLY BETTER TO GET IT BY USING 
     * getDeclaredFields() AND LOOPING TILL GET ONE OF TYPE 
     * Thread[] SINCE A FUTURE VERSION MIGHT CHANGE THE NAME 
     * BUT SINCE IS PACKAGE-LEVEL ACCESS, IT'S PROBABLY USED 
     * ELSEWHERE IN THE PACKAGE, AND THIS IS JUST AN EXAMPLE 
     */
    Field field = tg.getClass().getDeclaredField("threads");

    //NEED TO SUPPRESS ACCESS CHECKS  
    field.setAccessible(true); //EVEN IF SECURITY IS OFF YOU NEED THIS!!!!

    Thread[] tgThreads = (Thread[]) field.get(tg);

    for (int i = 0; i < tgThreads.length; i++) {
        if (tgThreads[i] != null)
            System.out.println(tgThreads[i].getName() + " = " + tgThreads[i].isAlive());
    }
} catch (NoSuchFieldException nsfe) {
    nsfe.printStackTrace();
} catch (IllegalAccessException iae) {
    iae.printStackTrace();
}

http://www.coderanch.com/t/232157/threads/java/Inactive-Threads-ThreadGroup