由于run()是public的,默认会被其他类调用,但是目前的需求是,run()只容许本类中调用,不要被其他任何类调用,相当于变成私有的,怎么实现呢
用内部类或者匿名内部类,创建一个内部类,该类实现Runnable接口,并在其中实现run()方法。将该内部类作为私有成员变量添加到需要运行Runnable的类中,并且只在需要的时候创建和启动该内部类的实例
public class MyClass {
private class MyRunnable implements Runnable {
@Override
public void run() {
// 实现 run() 方法的代码
}
}
public void startRunnable() {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
可以把TestLog类改成私有的
public class Main {
public static void main(String[] args) {
Thread th = new Thread(new MyThread());
th.start();
}
}
class MyThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"方式一");
}
}