Java:在构造函数中启动新线程
2022-09-02 21:08:50
为什么在Java(或任何地方)中,在构造函数中启动一个新线程是不受欢迎的。我收到了来自 Netbeans 的警告,但它没有给我任何重构建议。我正在编写一个客户端/服务器 Swing 应用程序,我正在启动的线程位于服务器的 JFrame 构造函数中,以便持续侦听客户端数据报。
为什么这不是好的做法,我应该如何避免?
为什么在Java(或任何地方)中,在构造函数中启动一个新线程是不受欢迎的。我收到了来自 Netbeans 的警告,但它没有给我任何重构建议。我正在编写一个客户端/服务器 Swing 应用程序,我正在启动的线程位于服务器的 JFrame 构造函数中,以便持续侦听客户端数据报。
为什么这不是好的做法,我应该如何避免?
从构造函数启动线程允许已启动的线程在正确构造对象之前访问该对象,从而使未完全构造的对象可供新线程使用。
您可以在构造函数中创建线程,并提供一个“startup”方法从外部启动线程。
或者,您可以将构造函数和启动方法设为私有,并提供一个静态工厂方法,该方法将创建对象、启动线程并返回创建的对象。
看看这个链接 http://www.ibm.com/developerworks/java/library/j-jtp0618/index.html#code4
这是通过对 和 的隐式引用来实现的。this
subclassing