Это правило помечает использование метода java.nio.channels.FileChannel.lock(). В Java SE 6 метод lock() стал выбрасывать java.nio.channels.OverlappingFileLockException.
Это правило помечает вызовы lock() не в блоке try/catch с обработкой OverlappingFileLockException или если в спецификаторе throws объемлющего метода не указано OverlappingFileLockException.
Пример 1:
|
public MyClass{
private void doX(){ FileChannel fc= getFileChannel(); fc.lock(); } } |
Пример 2:
|
public MyClass extends FileChannel{
private void doX(){ super.lock(); } // дополнительный код } |
Пример 3:
|
public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{ super.lock(); } private void doY() { try{ super.lock(); catch {OverlappingFileLockException e} {} } // дополнительный код } |
В примере 1 помечается вызов fc.lock().
В примере 2 помечается вызов super.lock().
В примере 3 ничего не помечается, так как метод doX() уже выбрасывает OverlappingFileLockException, а метод doY() обрабатывает OverlappingFileLockException.
В Java SE 6 добавлено системное свойство sun.nio.ch.disableSystemWideOverlappingFileLockCheck для управления проверкой файлов java.nio.channels.FileChannel.lock.
См. пункт 4 руководства Совместимость с Java SE 6.