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

时间:2011-11-08 21:49:24

标签: java multithreading

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

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

3 个答案:

答案 0 :(得分:24)

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

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

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

答案 1 :(得分:1)

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

这与对thissubclassing的隐式引用有关。

答案 2 :(得分:0)

使类最终化,也可能是一种解决方案,因为将没有子类。