所以我想有一个存储一系列股票报价的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