小编jef*_*eff的帖子

将读取同步到java集合

所以我想要一个存储一系列股票报价的arraylist.但我会跟踪每个的出价,要价和最后价格.

当然,任何时候,特定股票的买入价或最后价格都可能发生变化.

我有一个更新价格的线程和一个读取它们的线程.

我想确保在阅读时没有其他线程正在更新价格.所以我看了同步集合.但这似乎只是阻止阅读,而另一个线程正在添加或删除arraylist的条目.

所以现在我进入包装方法:

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;}
}
Run Code Online (Sandbox Code Playgroud)

所以我想用这个来完成的只有一个线程可以做任何事情 - 一次读取或更新the_list的内容.我接近这个吗?

谢谢.

java thread-safety

8
推荐指数
1
解决办法
414
查看次数

标签 统计

java ×1

thread-safety ×1