Class AutoCloseableReentrantLock

java.lang.Object
org.jivesoftware.util.AutoCloseableReentrantLock

public class AutoCloseableReentrantLock extends Object
A ReentrantLock lock that can be unlocked using an AutoCloseable. This allows for easy locking of resources, using a specific class as a namespace. Typical usage:
     try (final AutoCloseableReentrantLock.AutoCloseableLock ignored = new AutoCloseableReentrantLock(Clazz.class, user.getUsername()).lock()) {
         user.performNonThreadSafeTask();
     }
 

This essentially has the same effect as:

     synchronised ((Clazz.class.getName() + user.getUsername()).intern()) {
         user.performNonThreadSafeTask();
     }
 

but has advantages in that the current status of the lock can interrogated, the lock can be acquired interruptibly, etc.

  • Constructor Details

    • AutoCloseableReentrantLock

      public AutoCloseableReentrantLock(Class clazz, String resource)
      Create a class and resource specific lock. If another thread has not closed another AutoCloseableReentrantLock with the same class and resource then this will block until it is closed.
      Parameters:
      clazz - The class for which the lock should be created.
      resource - The resource for which the lock should be created.
  • Method Details