私は、クラスが非常に頻繁に読み取られるリストを保持しているが、たまにしか書き込まれない問題に取り組んでいます。私が正しく理解していれば、MyInterface が不変であると仮定すると、次のクラスはスレッドセーフであるはずです。
public class MyClass{
private volatile ImmutableList<MyInterface> list = ImmutableList.of();
public List<MyInterface> get(){
return list;
}
public synchronized add(MyInterface obj)
list = ImmutableList.builder().addAll(list).add(obj).build();
}
}
しかし、誰かが MyInterface のミュータブルでスレッドセーフではないバージョンを実装している場合、失敗する可能性があります。この問題を解決するにはどうすればよいですか。最終クラスに対して実装することはできますが、これは本当にベスト プラクティスですか?
ありがとう!