假设我有一个实现 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);
}
}
关键是我希望我的 Base 类做一些一般的事情,而不是每次都复制它。实际上,它运行良好,输出始终相同:
基础构造函数 使用参数 1 创建的衍生线程 衍生线程使用参数 1 运行
但是在 JAVA 中启动一个线程调用构造函数中的抽象方法是否安全?因为,据我所知,在大多数情况下,在 C++ 和 C# 中它是不安全的。谢谢!