Class FileLock


  • public class FileLock
    extends java.lang.Object
    Sometimes it is necessary to lock a file at the disk level. Since there is no native Java way of locking a file, we have to implement our own. Unfortunately, it appears as though we can only assume that rename is atomic. We base the locking on this then: rename the lock file and update it with the lock owners. How it works: for every file we want to lock we create an _lock file. This file contains information about who is locking the file, and in what mode. (Single writer, multiple readers.) To guarantee atomicity of update, we move (rename) the actual file each time we want to lock it and update the lock file. When this is done, we move (rename) it back. Almost like a two-phase commit protocol! Currently we don't support re-entrant locking.
    Since:
    JTS 1.0.
    Version:
    $Id: FileLock.java 2342 2006-03-30 13:06:17Z $
    Author:
    Mark Little (mark@arjuna.com)
    • Constructor Summary

      Constructors 
      Constructor Description
      FileLock​(java.io.File name)  
      FileLock​(java.io.File name, long timeout, long retry)  
      FileLock​(java.lang.String name)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean lock​(int lmode)  
      boolean lock​(int lmode, boolean create)  
      static java.lang.String modeString​(int mode)  
      boolean unlock()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • FileLock

        public FileLock​(java.lang.String name)
      • FileLock

        public FileLock​(java.io.File name)
      • FileLock

        public FileLock​(java.io.File name,
                        long timeout,
                        long retry)
    • Method Detail

      • lock

        public boolean lock​(int lmode)
        Since:
        JTS 2.1.1.
      • lock

        public boolean lock​(int lmode,
                            boolean create)
      • unlock

        public boolean unlock()
      • modeString

        public static java.lang.String modeString​(int mode)