Entre procesos archivo de bloqueo en Java que lanza una excepción

bk cuales:

He utilizado el método de trylock FileChannel para obtener un bloqueo en un archivo desde dos diferentes aplicaciones java, (obviamente generados con 2 diferentes PID), y observó que cuando una cerradura no está disponible, trylock regresa null en lugar de lanzar una excepción.

Según los javadocs: -

https://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileChannel.html#tryLock--

trylock método de FileChannel debe lanzar una excepción a la afirmación entre hilos, pero devuelve un valor nulo para la contención entre procesos. ¿Existe una API en el que podía obtener una excepción para la contención entre procesos, así?

Gracias

Joni:

Mi conjetura es, el bloqueo de archivo que está siendo propiedad de otro proceso se considera que es un caso común, y no una situación excepcional que requiere una excepción a ser lanzado. Lock.tryLock no lanza una excepción, ya sea, devuelve falso.

Si usted quiere lanzar una excepción en este caso, puede hacerlo usted mismo:

    FileLock fileLock = channel.tryLock();
    if (fileLock == null) {
        throw new IllegalStateException("Lock already held by another process");
    }

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=365824&siteId=1
Recomendado
Clasificación