filechannel

Mattepuffo's logo
Eseguire un file lock in Java

Eseguire un file lock in Java

Ci sono varie motivazioni per voler eseguire un file lock, come ad esempio evitare che qualcuno scriva su un file che stiamo leggendo.

Oppure per evitare di eseguire operazioni sullo stesso file in ambito multi-thread.

Oggi vediamo come eseguire questa operazione in Java; il tutto avviene tramite la classe FileChannel che ha disposizione due metodi, che ritornano entrambi un FileLock:

  • lock() --> acquisisce un lock esclusivo su tutto il file
  • lock(long position, long size, boolean shared) --> acquisisce un lock esclusivo su una porzione del file
  • tryLock() --> tenta di acquisire un lock esclusivo su tutto il file
  • tryLock(long position, long size, boolean shared) --> acquisisce un lock esclusivo su una porzione del file

Mattepuffo's logo
File lock in Java

File lock in Java

Lo scenario è questo: voglio evitare che venga avviato due volte lo stesso programma, e vorrei farlo senza usare l'ottima libreria JUnique.

Per farlo possiamo impostare un lock su un file e controllare su il lock è impostato o no.

Per questo useremo FileChannel e FileLock della libreria java.nio.