2012-05-10 11 views
7

¿Es seguro FileLock en java a través de múltiples hilos dentro del mismo proceso o entre diferentes procesos o ambos?¿Es seguro FileLock en java a través de múltiples hilos dentro del mismo proceso o entre diferentes procesos o ambos?

El javadoc dice: cerraduras

de archivos se llevan a cabo en nombre de toda la máquina virtual de Java. No son adecuados para controlar el acceso a un archivo por varios hilos dentro de la misma máquina virtual.

Los objetos de bloqueo de archivos son seguros para el uso por múltiples hilos concurrentes.

que realmente no entiendo: ¿significa que FileLock es seguro en varios subprocesos dentro del mismo proceso único, entre múltiples procesos diferentes o ambos?

+0

¿Qué parte de "no es adecuado para controlar el acceso a un archivo por varios subprocesos dentro de la misma máquina virtual" no se obtuvo? Está perfectamente claro. – EJP

Respuesta

2

Dice que los objetos son seguros para subprocesos cuando los mira como objetos Java simples, pero que no detendrán que otros subprocesos abran el mismo archivo. Es decir, no son seguros cuando observa el servicio que brindan.

+0

¿En otras palabras, es seguro para la sincronización de archivos entre procesos pero no para la sincronización de archivos entre hilos del mismo proceso? – shawn

+1

Sí, eso es lo que dice el documento. Pero recientemente hubo una publicación en la que un chico aún podía usar bloqueos de archivos dentro de Java. Él no confiaba en ellos para evitar que se abrieran otros hilos, pero como bloqueos * asesores *, puedes intentar explícitamente adquirir un bloqueo de archivos y ver si lo lograste. Aún así, esta es una práctica dudosa, con riesgos multiplataforma, y ​​un mal uso obvio de bloqueos de archivos de bajo nivel. –

2

Más abajo:

Esta API de bloqueo de archivos está destinado a asignar directamente a la instalación nativa bloqueo del sistema operativo subyacente. Por lo tanto, los bloqueos guardados en un archivo deben estar visibles para todos los programas que tengan acceso al archivo , independientemente del idioma en que estén escritos esos programas .

Esto sugiere que su propósito es ser utilizado entre diferentes procesos.

Esta línea:

que no son adecuados para el control de acceso a un archivo de múltiples hilos dentro de la misma máquina virtual.

sugiere que no deba usarlo si tiene un único proceso con múltiples hilos. En ese caso, puede utilizar una sección synchronized o ReadWriteLock.

Cuestiones relacionadas