【发布时间】:2011-12-30 08:15:32
【问题描述】:
我有许多并发运行的 http 请求服务线程。他们将为每个请求创建一个 Object(? extends Object) 并将对象保存在列表中。 建议我一些好的数据结构来实现这个列表。 我不能使用 ArrayList 因为它不是线程安全的。 我不喜欢使用 Vector - 因为它是同步的,所以当其中一个 http 线程正在保存对象时,它会使其他线程等待。 也试过LinkedList,但由于并发更新,有数据丢失。
【问题讨论】:
-
是的,您应该使用同步。您对速度的关注被称为“过早的优化”。您的另一个选择是使用并发包中使用 CAS 的原子之一。
-
同步是什么意思?在同一个时钟周期?你说的更新是什么意思?在 CPU 内存中,L1 缓存、L2 缓存还是主存?获得一致视图的唯一方法是使用某种锁定。否则你的问题没有任何意义。
标签: java multithreading variables simultaneous