マルチスレッドがランダムな順序でアクセスできるファイルがあります.Javaでファイルioコストを削減するために、ファイルがディスクから1回だけロードされるようにする方法は?
ありがとう。
マルチスレッドがランダムな順序でアクセスできるファイルがあります.Javaでファイルioコストを削減するために、ファイルがディスクから1回だけロードされるようにする方法は?
ありがとう。
現在アクセスしているファイルを追跡できます...
public static final long FILE_LOCKED = -1;
private static Set<File> lockedFiles = new HashSet<File>();
private byte[] fileContent;
private synchronized boolean acquireFileLock(File file) {
if(lockedFiles.contains(file) {
return false;
}
lockedFiles.add(file);
return true;
}
public long readFile(File file) {
if(acquireFileLock(file)) {
// read your File into fileContnent
lockedFiles.remove(file);
return bytesRead;
} else {
return FILE_LOCKED;
}