Java ThreadGroup类checkAccess()方法与示例

ThreadGroup类checkAccess()方法

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

  • checkAccess()方法用于检查当前正在运行的线程是否具有更新线程组的权限。

  • checkAccess()方法不是静态方法,因此无法使用类名进行访问(即,只能使用类对象访问此方法)。

  • checkAccess()方法是最终方法,因此它是不可重写的(即,该方法在子类中不可重写)。

  • 访问线程组时,此方法可能会引发异常。
    SecurityException:在存在安全管理器的情况下,当当前线程无权访问线程组时,发生此异常。

语法:

    public final void checkAccess();

参数:

  • 此方法不接受任何参数。

返回值:

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

示例

//Java程序演示的例子 
//ThreadGroup类的checkAccess()方法。

import java.lang.*;

class CheckAccess extends Thread {
    //覆盖run()Thread类
    public void run() {
        String name = Thread.currentThread().getName();
        System.out.println(name + " " + "finish executing");
    }
}

public class Main {
    public static void main(String[] args) {
        CheckAccess ca = new CheckAccess();

        try {
            //我们正在创建ThreadGroup类的对象
            ThreadGroup tg1 = new ThreadGroup("ThreadGroup 1");
            ThreadGroup tg2 = new ThreadGroup("ThreadGroup 2");

            //我们正在创建Thread类的对象,然后 
            //我们正在分配两个线程的ThreadGroup-

            Thread th1 = new Thread(tg1, ca, "First Thread");
            Thread th2 = new Thread(tg2, ca, "Second Thread");

            //start()使用Thread类对象的调用方法 
            //线程类

            th1.start();
            th2.start();

            //在这里,我们正在检查ThreadGroup的访问权限
            try {
                tg1.checkAccess();
                System.out.println(tg1.getName() + " " + "has access");

                tg2.checkAccess();
                System.out.println(tg2.getName() + " " + "has access");

            } catch (SecurityException se) {

                System.out.println(se.getMessage());
            }

            th1.join();
            th2.join();

        } catch (Exception ex) {

            System.out.println(ex.getMessage());
        }
    }
}

输出结果

E:\Programs>javac Main.java
E:\Programs>java Main
ThreadGroup 1 has access
ThreadGroup 2 has access
First Thread finish executing
Second Thread finish executing