Sprawdzenie wyjątku OverlappingFileLockException w metodzie lock() klasy FileChannel

Ta reguła oznacza użycie java.nio.channels.FileChannel.lock() . W środowisku Java SE 6 lock() metoda teraz zgłasza java.nio.channels.OverlappingFileLockException .

Ta reguła oznacza lock() metoda, która nie ma bloku try/catch z OverlappingFileLockException lub jeśli metoda otaczająca nie zgłasza OverlappingFileLockException .

Przykład 1:

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

Przykład 2:

< span class="Code" > public MyClass rozszerza klasę FileChannel{
private void doX(){
super.lock();
}
// dalszy kod
}

Przykład 3:

< span class="Code" > public MyClass rozszerza klasę FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// dalszy kod
}

W przykładzie 1 fc.lock() Połączenie zostanie oznaczone flagą.

W przykładzie 2 super.lock() Połączenie zostanie oznaczone flagą.

W przykładzie 3 nic nie zostanie oznaczone, ponieważ metoda doX() już zgłasza OverlappingFileLockException i metoda doY() OverlappingFileLockException .

Java SE 6 dodała właściwość systemową sun.nio.ch.disableSystemWideOverlappingFileLockCheck do sterowania java.nio.channels.FileChannel.lock działanie sprawdzania pliku.

Dodatkowe informacje można znaleźć w punkcie 4 podręcznika Kompatybilność środowiska Java SE 6.