念のため。私は Java Concurrency in practice book に従っています。特に最終的に安全に公開する場合、最初に参照が他のすべてのスレッドに表示され、次に公開されたオブジェクトの状態が他のすべてのスレッドに表示されることは明らかですが、ここでの問題は、参照された配列要素は、公開された状態で表示されることが保証されていますか? (確かに、誰もそれらのデータ オブジェクトを変更しない限り)。
例:
@Mutable
public class NotThreadsafeDataObject {
private String message;
public NotThreadsafeDataObject (String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
それでは、可変オブジェクトの配列を安全に公開しましょう。
public class Publish {
public final NotThreadsafeDataObject[] publish;
public Publish() {
publish = new NotThreadsafeDataObject[] { new NotThreadsafeDataObject("one"), new NotThreadsafeDataObject("two")};
}
}