Verificar a OverlappingFileLockException para o método FileChannel lock()

Esta regra sinaliza o uso do java.nio.channels.FileChannel.lock() . No Java SE 6, o lock() método agora lança java.nio.channels.OverlappingFileLockException .

Esta regra sinalizará o lock() método que não tem um bloco try / catch com OverlappingFileLockException ou se o método circundante não lançar OverlappingFileLockException .

Exemplo 1:

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

Exemplo 2:

< span class="Code"> public MyClass estende FileChannel{
private void doX(){
super.lock();
}
// mais código
}

Exemplo 3:

< span class="Code"> public MyClass estende FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// mais código
}

No exemplo 1, o fc.lock() chamada será sinalizada.

No exemplo 2, o super.lock() chamada será sinalizada.

No exemplo 3, nada será sinalizado, porque o método doX() já lança OverlappingFileLockException e o método doY() captura OverlappingFileLockException .

Java SE 6 incluiu a propriedade de sistema sun.nio.ch.disableSystemWideOverlappingFileLockCheck para controlar java.nio.channels.FileChannel.lock Comportamento de verificação de arquivo

Para obter informações adicionais, consulte o item 4 no guia Compatibilidade do Java SE 6.