在我们初始化字段之后从它的构造函数内部启动一个Thread是否可以接受,并且一般来说从一个构造函数内部启动一个Thread是不好的做法? 例如:
class A extends Thread{
private String s;
private int x
public A(String str,int xx){
s = str;
x = xx;
start();
}
public void run() { System.out.println(s + " " + x);}
}
答案 0 :(得分:0)
一般来说,从外面控制一个物体是一种很好的做法,因此有吸气剂和固定剂等方法......这同样适用于此,开始一个只是闻起来不好的线程,不要这样做
答案 1 :(得分:0)
正如我的评论中所述,扩展Thread是一种不好的做法,所以这个问题不是问题。但是你建议的代码再次超过"糟糕的做法" - 这很危险。您在对象完全构建之前对其执行关键操作,这可能导致无法预料且难以调试的错误和副作用。这也极大地限制了代码的灵活性,因为现在你不得不以一种方式使用线程。
关于实现Runnable或扩展Thread的单独问题,本网站已经在包括this one在内的多个主题中对此进行了详细讨论,我邀请您一起来看看。