【发布时间】:2015-02-14 15:45:46
【问题描述】:
我有一个在后台更新的静态 concurrentHashMap 对象。虽然它正在更新,但我想在另一个线程中访问它的值。我正在使用从文档中了解到的 concurrentHashMap,并认为它适合这种情况
这就是我正在做的事情
for (Map.Entry<String, ArrayList<property>> entry : alldata.entrySet())
{
udata.put(entry.getKey(), new ArrayList<property>(entry.getValue()));
}
在上面的代码中,我正在更新从服务器获取数据的 udata,但在后台。
在另一个线程中,我正在访问其中的一些信息..
for (String s: sTypes)
{
if(jprocess.udata != null)
{
if (jprocess.udata.get(s) != null)
{
if (jprocess.udata.get(s).size() > 0) {
if (xcor < jprocess.udata.get(s).size())
if (xcor != -1) {
allData.add(jprocess.udata.get(s).get(xcor));
}
}
}
}
}
但是当我尝试从中访问任何索引时,我无法访问任何内容,我希望很清楚我想要什么..
我已经尝试过 ConcurrentHashMap,它应该适用于这种情况,但可能是我不太了解它..
【问题讨论】:
-
你指的是哪个索引?
-
哈希图中的任何索引对应于键 ....
-
首先,为了遵循通用语言,将其称为 value,其次,您确定要在 地图填充后开始访问数据吗?
-
这是我的观点,地图在后台不断填充......所以我想在它被附加时访问现有值......带有新数据......
-
我相信你需要看看
CountDownLatch()和java.util.concurrency包中的其他类。
标签: android hashmap java.util.concurrent concurrenthashmap