【发布时间】:2009-07-05 18:27:47
【问题描述】:
我想在ConcurrentHashMap 的帮助下缓存一些 IO。对二进制文件的修改也应该反映在缓存中。由于缓存将被多个线程使用,所有 IO 操作都是同步的。地图的修改进入同一个synchronized 块。大致如下:
synchronized (file) {
file.deleteRecord(index)
map.remove(index);
}
和
synchronized(file) {
file.writeRecord(index, record);
map.put(index, record);
}
map 和 file 都是私有的,从缓存类外部看不到。
如果缓存读取,即map.get(index),没有synchronized 块,是否保留线程安全?
正如我之前提到的,ConcurrentHashMap 用作地图实现。
【问题讨论】:
标签: java concurrency synchronization concurrenthashmap