我正在处理一个问题,其中一个类包含一个经常阅读的列表,但偶尔只写一次。如果我理解正确,假设 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 的可变而不是线程安全的版本,它可能会失败。我怎么解决这个问题。我可以针对最终课程实施,但这真的是最佳做法吗?
谢谢!