是否可以在Java中执行此类操作?我只是想知道。
首先,我只是创建一个有一个参数的新线程。
Thread thread = new Thread(new Person());
然后,在Person()的构造函数中,我想启动该线程。 这样的事情可能吗?
public Person() {
// Here belongs some code for the constructor and then
// I would like to start the thread
}
答案 0 :(得分:3)
Thread()
构造函数之前,它首先必须急切地评估所有参数,包括调用Person()
构造函数。这意味着,在调用Person
构造函数时,外部Thread
对象甚至不存在或尚未初始化,因此您无法真正使用它。
答案 1 :(得分:1)
没有
您没有对Person
构造函数中的线程的引用。所以,线程仍然不存在。
即使你拥有它,也可以做像
这样的事情 public Person() {
Thread a = new MyThread(this);
}
是不好的做法,因为您传递的实例(this
)可能尚未完全初始化。
答案 2 :(得分:0)
这是你在找什么?请注意{start()}
的使用,它避免了在构造函数中调用start
的所有问题。
new Thread() {
{ start(); }
public void run() {
...
}
};
您可以看到原始的here。