ConcurrentHashMap
の助けを借りてIOをキャッシュしたいと思います。バイナリファイルの変更は、キャッシュにも反映する必要があります。キャッシュは複数のスレッドによって使用されるため、すべてのIO操作は同期されます。マップの変更は同じブロック内になります。これはおおよそ次のようになります。ConcurrentHashMap修飾子の同期
synchronized (file) {
file.deleteRecord(index)
map.remove(index);
}
と
synchronized(file) {
file.writeRecord(index, record);
map.put(index, record);
}
map
とfile
どちらもプライベートであり、キャッシュ・クラスの外から見ていません。
キャッシュ読み取り(map.get(index)
)がブロックなしで行われる場合、スレッドセーフティが維持されますか?
前述のとおり、ConcurrentHashMap
がマップの実装として使用されます。
答えを捨ててくれてありがとう。 – user133406