所以我想有一個存儲一系列股票報價的arraylist。但我保持跟蹤競標價格,詢問每個價格和最後價格。同步讀取到一個java集合
當然在任何時候,出價詢問或給定股票的最後一個可以改變。
我有一個線程更新價格和一個讀取它們。
我想確保在閱讀時沒有其他線程正在更新價格。所以我看着同步收集。但這似乎只阻止閱讀,而另一個線程添加或刪除一個條目到數組列表。
所以現在我到包裝方式:
public class Qte_List {
private final ArrayList<Qte> the_list;
public void UpdateBid(String p_sym, double p_bid){
synchronized (the_list){
Qte q = Qte.FindBySym(the_list, p_sym);
q.bid=p_bid;}
}
public double ReadBid(String p_sym){
synchronized (the_list){
Qte q = Qte.FindBySym(the_list, p_sym);
return q.bid;}
}
,所以我想這個實現的目標只有一個線程可以做任何事情 - 讀書或更新the_list的內容 - 在同一時間。我正在處理這個權利?
謝謝。
您是否試圖防止寫入同時發生的讀取引用對象?如果是這樣,鎖定集合將無法完成此操作。看到我的答案。 – DJClayworth 2010-05-19 13:48:34