Java:在构造函数中启动一个新线程

为什么在Java中(或者就任何地方而言)在构造函数中开始一个新线程。 我收到了Netbeans的警告,但它没有给我任何重构建议。 我正在编写一个客户端/服务器Swing应用程序,我正在启动的线程在服务器的JFrame构造函数中,以便持续监听客户端数据报。

为什么这不是好的做法,我该如何避免呢?

从构造函数启动一个线程允许启动的线程在正确构造之前访问正在构造的对象,从而使一个未完全构造的对象可用于新线程。

您可以在构造函数中创建线程,并提供“启动”方法以从外部启动线程。

或者您可以将构造函数和启动方法设置为私有,并提供静态工厂方法,该方法将创建对象,启动线程并返回创建的对象。

请访问此链接http://www.ibm.com/developerworks/java/library/j-jtp0618/index.html#code4

这与thissubclassing隐式引用有关。