2011-12-30 27 views
-4

我有很多并发运行的http请求服务线程。他们将为每个请求创建一个Object(?extends Object)并将该对象保存在列表中。 请教我一些很好的数据结构来实现这个列表。 我不能使用ArrayList,因为它不是线程安全的。 我不喜欢使用矢量 - 因为它的同步,它会使其他线程等待,当一个HTTP线程保存对象。 也试过LinkedList,但由于并发更新而导致数据丢失。变量值由不同线程模拟改变

+0

是的,你应该使用同步。您对速度的担忧称为“不成熟优化”。您的其他选项是使用来自使用CAS的并发包中的一个原子。 – 2011-12-30 08:42:39

+0

你是什么意思同时?在同一个时钟周期?你的意思是什么更新?在CPU内存中,L1缓存,L2缓存还是主内存?拥有一致视图的唯一方法是使用某种类型的锁定。否则你的问题并不意味着什么。 – 2011-12-30 08:54:17

回答

1

您的变量需要是原子的,以便它可以安全地由多个线程更新(请参阅java.util.concurrent.atomic)。您也可以使用AtomicInteger来跟踪变量更新的次数。

但是你确定要不要明确控制更新到变量吗?