在一次采访中,我被要求提出一种方法,该方法将确保当线程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();
}
}
}
}
答案 0 :(得分:0)
您可以使用protected modifier,如下面的代码。 T1可以通过扩展Main类来调用aMethod(),但是T2不能调用aMethod()。
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() } }