【发布时间】:2018-06-10 17:42:01
【问题描述】:
我想让一个线程等待另一个线程完成对 Hashmap 的写入,但我总是得到 java.util.ConcurrentModificationException,尽管我同步了方法。
这是我的代码:
HashMap<Page, Integer> prebuffer = new HashMap<Page, Integer>();
Map<Page,Integer> buffer = Collections.synchronizedMap(prebuffer);
private synchronized void bufferContaining(int pageid) {
synchronized (buffer) {
if (buffer.size() > 1) {
for (Map.Entry<Page, Integer> entry : buffer.entrySet()) {
Page page = entry.getKey();
int taIds = entry.getValue();
if (page.pid == pageid) {
buffer.remove(page, new Integer(taIds));
}
}
}
}
}
非常感谢您的帮助! :)
【问题讨论】:
标签: java multithreading synchronized