这个问题已经在这里有一个答案:
- 这有什么错在构造函数中覆盖的方法调用? 7个回答
让我们假设我有一个实现Runnable接口的抽象基类。
public abstract class Base implements Runnable {
protected int param;
public Base(final int param) {
System.out.println("Base constructor");
this.param = param;
// I'm using this param here
new Thread(this).start();
System.out.println("Derivative thread created with param " + param);
}
@Override
abstract public void run();
}
这里是一些衍生类之一。
public class Derivative extends Base {
public Derivative(final int param) {
super(param);
}
@Override
public void run() {
System.out.println("Derivative is running with param " + param);
}
public static void main(String[] args) {
Derivative thread = new Derivative(1);
}
}
问题的关键是,我想我的基类做的,而不是每一次复制它的一些东西一般。 其实,这是运行良好,输出始终是相同的:
与参数1衍生创建的基本构造函数微分线程与参数1运行
但是,它的安全在Java中启动一个线程调用构造函数中的抽象方法? 因为,在C ++和C#这是在大多数情况下是不安全的,所以据我所知。 谢谢!