是的,您是对的,这是一场数据竞赛。
只有
ImmutableObject是不可变的,并且可以在线程之间安全地共享
List,但是您的却没有这些相同的保证,因此在添加
ImmutableObject和检索之间存在数据竞争。
在JCIP中,作者表示不可变对象可以安全发布,因为您不必担心做防御性复制之类的事情。
关于:
不可变对象可以在没有附加同步的情况下被任何线程安全地使用,即使不使用同步来发布它们。
该语句意味着给定两个线程都具有
A通过任何方式获取的不可变对象的线程,它们都可以使用对象
A而不必担心线程安全性问题。



