在Brian Goetz 关于安全施工技术的文章中,您可以阅读:
[...] 通常当一个对象拥有一个线程时,要么该线程是一个内部类,要么我们将 this 引用传递给它的构造函数(或者该类本身扩展了 Thread 类)。如果一个对象要拥有一个线程,最好该对象提供一个 start() 方法,就像 Thread 一样,从 start() 方法而不是从构造函数启动线程。虽然这确实通过接口暴露了类的一些实现细节(例如可能存在的自有线程),这通常是不可取的,但在这种情况下,从构造函数启动线程的风险超过了实现隐藏的好处。
我想使用以下代码应该没有任何问题。因为它不是内部类,我也没有传递this
. 但我想确定。
private Controller controller;
private View view;
public Facade() {
view = new View();
controller = new Controller(view);
controller.start();
}
我不断收到 NetBeans 警告......那么这段代码是安全的还是不安全的?