2011-12-30 20 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來跟蹤變量更新的次數。

但是你確定要不要明確控制更新到變量嗎?