Java 如何限制特定线程对方法的访问?

Java 如何限制特定线程对方法的访问?,java,multithreading,Java,Multithreading,在一次采访中,我被要求提出一种方法,确保线程T1和T3可以访问类的方法,而T2不能访问该方法 我无法提供任何解决方案。你能举个例子解释一下吗 我后来提出了以下解决方案。效率高吗 package JavaProgramming; public class EligibleThread implements Runnable { public void method1() { System.out.println("Hello"); } public s

在一次采访中,我被要求提出一种方法,确保线程T1和T3可以访问类的方法,而T2不能访问该方法

我无法提供任何解决方案。你能举个例子解释一下吗

我后来提出了以下解决方案。效率高吗

package JavaProgramming;

public class EligibleThread implements Runnable {

    public void method1() {
        System.out.println("Hello");
    }

    public static void main(String[] args) {
        EligibleThread t1 = new EligibleThread();
        EligibleThread t2 = new EligibleThread();
        Thread t11 = new Thread(t1, "t1");
        Thread t22 = new Thread(t2, "t2");
        t11.start();
        t22.start();

    }

    public void run() {
        if (Thread.currentThread().getName() != "t2") {
            method1();
        } else{
            try {
                throw new Exception("Access is denied");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

您可以使用受保护的修饰符,如下面的代码。T1可以通过扩展主类来调用aMethod(),但T2不能调用aMethod()

公共班机{ 受保护的无效方法(){ } } 类T1扩展了可运行的主实现{ @凌驾 公开募捐{ aMethod(); } } 类T2实现可运行的{ @凌驾 公开募捐{ //这里不能呼叫Main.aMethod() } }
听起来与线程无关。如何阻止从某个地方访问,但允许从另一个地方访问?:)@DreamspacePresident根据您的评论,稍后我提出了上面的代码片段(包含在我的帖子中)。我认为您提供了一个不错的解决方案。但也请参见:谢谢@Sam的回答。 public class Main { protected void aMethod() { } } class T1 extends Main implements Runnable{ @Override public void run() { aMethod(); } } class T2 implements Runnable{ @Override public void run() { // here can't call Main.aMethod() } }