この規則により、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 を参照してください。