在多线程环境中,我有一个带有静态 ArrayList 的单例。
假设一个线程获取实例并对 ArrayList 执行“for”循环。只是阅读。没有更新。这可能需要一些时间才能完成。发生这种情况时,另一个线程会更新 ArrayList。
循环(第一个线程)会发生什么?理想情况下,我希望“for”循环以“旧”数据完成,如果我再次获得实例,则获得新的数据集。
在这种情况下,诀窍是不使用 volatile 吗?或者从静态 ArrayList 为“for”循环创建一个新的 ArrayList?或者... ?