0

ThreadGroup多くのスレッドを含むを開始したいのですが、start()メソッドがThreadGroupクラスにありません。stop()ただし、スレッドグループを停止する方法があります。start()メソッドが利用できない場合、どうすればスレッドグループを開始できますか?

start()以下のコードを参照してください。メソッドがThreadGroupクラスに存在しないため、スレッドを 1 つずつ開始できますが、スレッド グループを開始できません。要件は、同時にスレッド グループを開始する必要があることですが、これを行うにはどうすればよいですか?

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());
    }
    }
}
4

1 に答える 1

2

ドキュメントから:

スレッド グループは、一連のスレッドを表します。

同時に複数のスレッドを処理するようには設計されていません。.start()

他の s の状態にアクセスできるThreadsグループまたは otherに追加できますが、一緒に開始することはできません。Aは、自身に関する情報にアクセスできますが、その親またはその他に関する情報にアクセスすることはできません。ThreadGroupsThreadThreadGroupThreadThreadGroupThreadGroupThreadGroupThreadGroups

利用可能な機能と使用例の詳細については、こちらをお読みください

于 2016-02-13T11:00:50.293 に答える