ThreadGroup.activeCount () метод не работает в Java - PullRequest
0 голосов
/ 04 ноября 2019

Я изучаю концепцию многопоточности, где я пытался найти количество активных потоков в массиве, но метод ThreadGroup.activeCount () для него возвращается только нулевое значение.

Вот код:

Класс объекта потока : -

class th1 extends Thread
{
    public th1(String threadName, ThreadGroup tg1)
    {
        super(tg1, threadName);
    }

    @Override
    public void run() 
    {
        try {
            Thread.sleep(5000);
        } 
        catch (InterruptedException e) 
        {
            e.printStackTrace();
        }

        System.out.println(Thread.currentThread().getName() + " is running");
    }
}

основной класс : -

public class enumerate_demo 
{
    public static void main(String[] args) 
    {
        ThreadGroup tg1 = new ThreadGroup("group 1");

        Thread t1 = new Thread(new th1("t-1", tg1));
        t1.start();

        Thread t2 = new Thread(new th1("t-2", tg1));
        t2.start();

        Thread t3 = new Thread(new th1("t-3", tg1));
        t3.start();

        System.out.println("Number of active count :- " + tg1.activeCount());

        Thread[] group = new Thread[tg1.activeCount()];

        int count = tg1.enumerate(group);

        for (int i = 0; i < count; i++)
        {
            System.out.println("Thread " + group[i].getName());
        }
    }
}

1 Ответ

0 голосов
/ 04 ноября 2019

Проблема в том, что при создании экземпляров класса th1 вы используете их как Runnable, а не Thread. И эти потоки-обертки не связаны ни с каким ThreadGroup. Объявите переменные следующим образом.

        Thread t1 = new th1("t-1", tg1);
        t1.start(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...