1
在Brian Goetz's article about safe construction techniques你能讀:開始在構造一個線程
[...]通常,當一個對象擁有一個線程,要麼線程是一個內部類,或者我們通過這個參考其構造函數(或者類本身擴展了Thread類)。如果一個對象要擁有一個線程,最好是對象提供一個start()方法,就像Thread一樣,並且從start()方法而不是從構造方法啓動線程。雖然這確實通過接口暴露了類的一些實現細節(例如可能存在一個擁有的線程),但這往往是不可取的,在這種情況下,從構造函數啓動線程的風險超過了實現隱藏的好處。
我想用下面的代碼應該沒有任何問題。由於它不是內部類,所以我通過了this
的參考。但我想確定。
private Controller controller;
private View view;
public Facade() {
view = new View();
controller = new Controller(view);
controller.start();
}
雖然我不斷收到NetBeans警告......那麼這段代碼是安全還是不安全?
而你的問題是? – Robert
和你的問題是什麼? – CAA
@Robert ok;)「那麼這段代碼安全還是不安全?」 – eversor