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

この規則により、java.nio.channels.FileChannel.lock() メソッドの使用にフラグを立てます。 Java SE 6 では、lock() メソッドは java.nio.channels.OverlappingFileLockException をスローするようになりました。

この規則は、lock() メソッドに OverlappingFileLockException を含む try/catch ブロックがない場合、またはそれを囲んでいるメソッドが OverlappingFileLockException をスローしない場合にフラグを立てます。

例 1:

public MyClass{
private void doX(){
FileChannel fc= getFileChannel();
fc.lock();
}
}

例 2:

public MyClass extends FileChannel{
private void doX(){
super.lock();
}
// more code
}

例 3:

public MyClass extends 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() メソッドが OverlappingFileLockException をキャッチしているため、いずれにもフラグは立てられません。

Java SE 6 では、java.nio.channels.FileChannel.lock ファイルを検査する振る舞いを制御するシステム・プロパティー sun.nio.ch.disableSystemWideOverlappingFileLockCheck が追加されました。

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