FileChannel lock() メソッドの OverlappingFileLockException を確認する

この規則により、以下の使用にフラグを立てます。 java.nio.channels.FileChannel.lock() メソッド。 Java SE 6 では、 lock() メソッドが現在スローされている java.nio.channels.OverlappingFileLockException .

この規則は、 lock() try/catch ブロックを持たないメソッドには、 OverlappingFileLockException または、周囲のメソッドがスローしない場合 OverlappingFileLockException .

例 1:

< span class="Code"> public MyClass{
private void doX(){
FileChannel fc= getFileChannel();
fc.lock();
}
}

例 2:

< span class="Code"> public MyClass は、 FileChannel{を拡張します
private void doX(){
super.lock();
}
// more code
}

例 3:

< span class="Code"> public MyClass は、 FileChannel{を拡張します
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// more code
}

例 1 では、 fc.lock() 呼び出しにフラグが立てられます。

例 2では、 super.lock() 呼び出しにフラグが立てられます。

例 3 では、 doX() メソッドが既にスローされているため、フラグが立てられません。 OverlappingFileLockException および doY() メソッドが catch する OverlappingFileLockException .

Java SE 6 でシステム・プロパティーが追加されました sun.nio.ch.disableSystemWideOverlappingFileLockCheck 制御する java.nio.channels.FileChannel.lock ファイル・チェックの動作。

追加情報については、「Java SE 6 Compatibility」ガイドの項目 4 を参照してください。