不可變對象可以通過任何機制發佈 - 必須安全地發佈有效的不可變對象(靜態初始化,非易失性等) - '實踐中的Java併發性'。發佈不可變
class A{//immutable
final int i;
a(int i){
this.i=i;
}
public int getI(){
return i;
}
}
class B{
A a=null;
public A getA(){
if(a==null){
a= new A(10);
}
return a;
}
}
如果B的實例線程之間共享;將不會有的局部構造的泄漏的可能性 - 雖然它是不可變的。
還是我明白這個錯誤?
只有兩種可能性:1)a爲空2)a被完全構建 – hoaz
您能否確保代碼先編譯? – skiwi
讓我們假設A有一個比這更密集的建築。據我所知,建築本身不是一個原子操作。 – IUnknown