Java ThreadGroup destroy()方法与示例

ThreadGroup类destroy()方法

  • destroy()方法在java.lang包中可用。

  • destroy()方法用于销毁该线程组,当我们销毁该线程组时,将同时销毁其子线程组。

  • destroy()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • 当销毁该线程组时,destroy()方法可能会引发异常。

    • 当该线程组已经被销毁时。

    • 当该线程组不为空时。

    • SecurityException-如果不允许当前线程更新此线程组,则可能引发此异常。

    • IllegalThreadStateException –在两种情况下可能引发此异常

    语法:

        public final void destroy();

    参数:

    • 它不接受任何参数。

    返回值:

    此方法的返回类型为void,不返回任何内容。

    示例

    //Java程序演示示例 
    //destroy()ThreadGroup的void方法的说明 
    
    public class Destroy implements Runnable {
        public static void main(String[] args) {
            Destroy des = new Destroy();
            des.destroyed();
        }
    
        public void destroyed() {
            try {
                //创建两个线程组,命名为base-
                //并派生
    
                ThreadGroup base = new ThreadGroup("Base ThreadGroup");
                ThreadGroup derived = new ThreadGroup(base, "Derived ThreadGroup");
    
                //创建两个线程
                Thread th1 = new Thread(base, this);
                Thread th2 = new Thread(derived, this);
    
                //通过使用getName()方法是检索
                //线程名称th1-
                System.out.println(th1.getName() + " " + "begins.....");
    
                //通过使用start()方法是开始执行 
                //线程th1-
                th1.start();
    
                //通过使用getName()方法是检索
                //线程名称th2-
                System.out.println(th2.getName() + " " + "begins.....");
    
    
                //通过使用start()方法是开始执行 
                //线程th2-
                th2.start();
    
                System.out.println();
    
                //通过使用join()方法是等待当前
                //线程直到另一个执行完全
                //线程
    
                th1.join();
                th2.join();
    
                //通过使用destroy()方法是
                //销毁名为派生的线程组
                derived.destroy();
                boolean b1 = derived.isDestroyed();
                System.out.println(derived.getName() + " " + "destroyed" + " " + b1);
    
                boolean b2 = base.isDestroyed();
                System.out.println(base.getName() + " " + "destroyed" + " " + b2);
    
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    
        //覆盖run()
        public void run() {
            for (int k = 0; k < 100; ++k)
                ++k;
            System.out.println(Thread.currentThread().getName() + " " + "ends.....");
        }
    }

    输出结果

    Thread-0 begins.....
    Thread-0 ends.....
    Thread-1 begins.....
    
    Thread-1 ends.....
    Derived ThreadGroup destroyed true
    Base ThreadGroup destroyed false