Я хочу начать ThreadGroup
, который содержит много потоков, но метод start()
нет в классе ThreadGroup
. У этого есть метод stop()
, чтобы остановить группу нитей. Как запустить группу потоков, если метод start()
недоступен?Как начать ThreadGroup в java?
Пожалуйста, ознакомьтесь с нижеприведенным кодом, я могу начать нить один за другим, но не могу начать группу нитей, потому что start()
метода нет в ThreadGroup
класс. Требование состоит в том, что нам нужно одновременно начинать группу потоков, как это можно сделать?
public class ThreadGroupExample
{
public static void main(String[] args)
{
ThreadGroup thGroup1 = new ThreadGroup("ThreadGroup1");
/* createting threads and adding into thread grout "thGroup1" */
Thread1 th1 = new Thread1(thGroup1, "JAVA");
Thread1 th2 = new Thread1(thGroup1, "JDBC");
Thread2 th3 = new Thread2(thGroup1, "EJB");
Thread2 th4 = new Thread2(thGroup1, "XML");
/* starting all thread one by one */
th1.start();
th2.start();
th3.start();
th4.start();
// thGroup1.start();
thGroup1.stop();
}
}
class Thread1 extends Thread
{
Thread1(ThreadGroup tg, String name)
{
super(tg, name);
}
@Override
public void run()
{
for (int i = 0; i < 10; i++)
{
ThreadGroup tg = getThreadGroup();
System.out.println(getName() + "\t" + i + "\t" + getPriority()
+ "\t" + tg.getName());
}
}
}
class Thread2 extends Thread
{
Thread2(String name)
{
super(name);
}
Thread2(ThreadGroup tg, String name)
{
super(tg, name);
}
@Override
public void run()
{
for (int i = 0; i < 10; i++)
{
ThreadGroup tg = getThreadGroup();
System.out.println(getName() + "\t" + i + "\t" + getPriority()
+ "\t" + tg.getName());
}
}
}
«ThreadGroup» не сможет запускать все свои потоки по той простой причине, что потоки фактически добавляются в группу только при их запуске. Обратите внимание, что ** устаревшие и опасные методы 'stop()' и 'suspend()' в 'ThreadGroup' просто запускают тот же самый последовательный цикл, который вы все равно избегаете. – RealSkeptic
@RealSkeptic вы уверены, что это дубликат? Я утверждаю, что дублирование - это то, что происходит после OP, но вопрос заключается в другой теме/проблеме, которая не объясняется в dup. Пожалуйста, передумайте. – Idos
@Idos Я считаю, что в его текущей форме есть проблема XY, в которой фактическая проблема является дубликатом, а вопрос «ThreadGroup» является лишь вторичным. Ваш ответ и мой комментарий дают достаточно информации, чтобы объяснить, почему ThreadGroup не имеет значения для решения этой проблемы, но любой реальный ответ на OP фактически будет ответом на обман. – RealSkeptic