Ricerca di OverlappingFileLockException per il metodo FileChannel lock()

Questa regola contrassegna l'utilizzo del java.nio.channels.FileChannel.lock() metodo. In Java SE 6, lock() il metodo ora genera java.nio.channels.OverlappingFileLockException .

Questa regola contrassegnerà il lock() metodo che non ha un blocco try / catch con OverlappingFileLockException o se il metodo circostante non genera OverlappingFileLockException .

Esempio 1:

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

Esempio 2:

< span class="Code"> public MyClass estende FileChannel{
private void doX(){
super.lock();
}
// more code
}

Esempio 3:

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

Nell'esempio 1, il fc.lock() la chiamata verrà contrassegnata.

Nell'esempio 2, super.lock() la chiamata verrà contrassegnata.

Nell'esempio 3, non verrà contrassegnato alcun elemento, poiché il metodo doX() genera già OverlappingFileLockException e il metodo doY() rileva OverlappingFileLockException .

Java SE 6 ha aggiunto la proprietà di sistema sun.nio.ch.disableSystemWideOverlappingFileLockCheck per controllare java.nio.channels.FileChannel.lock comportamento di controllo file.

Per ulteriori informazioni, consultare l'elemento 4 nella guida Java SE 6 Compatibility.