Class FileLockNamedLock

  • All Implemented Interfaces:
    java.lang.AutoCloseable, NamedLock

    public final class FileLockNamedLock
    extends NamedLockSupport
    Named lock that uses FileLock. An instance of this class is about ONE LOCK (one file) and is possibly used by multiple threads. Each thread (if properly coded re boxing) will try to obtain either shared or exclusive lock. As file locks are JVM-scoped (so one JVM can obtain same file lock only once), the threads share file lock and synchronize according to it. Still, as file lock obtain operation does not block (or in other words, the method that does block cannot be controlled for how long it blocks), we are "simulating" thread blocking using Retry utility. This implementation performs coordination not only on thread (JVM-local) level, but also on process level, as long as other parties are using this same "advisory" locking mechanism.
    Since:
    1.7.3
    • Method Detail

      • lockShared

        public boolean lockShared​(long time,
                                  java.util.concurrent.TimeUnit unit)
                           throws java.lang.InterruptedException
        Description copied from interface: NamedLock
        Tries to lock shared, may block for given time. If successful, returns true.
        Throws:
        java.lang.InterruptedException
      • lockExclusively

        public boolean lockExclusively​(long time,
                                       java.util.concurrent.TimeUnit unit)
                                throws java.lang.InterruptedException
        Description copied from interface: NamedLock
        Tries to lock exclusively, may block for given time. If successful, returns true.
        Throws:
        java.lang.InterruptedException