I want to let a single thread wait for another one to finish writing on a Hashmap but I always get a java.util.ConcurrentModificationException, eventhough I synchronized the method.
Here is my Code:
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));
}
}
}
}
}
Thank you very much for your help! :)