1

マルチスレッドがランダムな順序でアクセスできるファイルがあります.Javaでファイルioコストを削減するために、ファイルがディスクから1回だけロードされるようにする方法は?

ありがとう。

4

2 に答える 2

0

現在アクセスしているファイルを追跡できます...

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;
}
于 2013-04-26T04:25:38.270 に答える