Class LockManager<K>

java.lang.Object
com._1c.g5.v8.dt.internal.platform.services.core.LockManager<K>
Type Parameters:
K - key type

public abstract class LockManager<K> extends Object
Produces locks for given keys with next rules:
  • Already produced locks are unique by given keys in every time of usage while strong references to locks are reachable
  • Locks are weak-referenced inside manager, and will be collected by GC after client references to locks would become unreachable.
Subclass must implement clone(K) method cause manager doesn't hold strong references to keys.
  • Constructor Details

    • LockManager

      public LockManager()
      Constructor of LockManager.
  • Method Details

    • getLock

      public Lock getLock(K key)
      Returns a lock instance, that is unique by given key instance. Already produced locks are unique by given keys in every time of usage while strong references to locks are reachable.
      Parameters:
      key - key to get lock for, cannot be null
      Returns:
      a lock instance, that is unique by given key instance, never null
    • clone

      protected abstract K clone(K source)
      Clone given source key. Method is intended to return new instance of key, that is equal to given.
      Parameters:
      source - source key to clone, cannot be null
      Returns:
      cloned key, never null
    • createLock

      protected Lock createLock()
      Create new lock.
      Returns:
      created lock instance, never null
    • createReference

      protected Reference<Lock> createReference(Lock lock)
      Create new reference to given lock instance.
      Parameters:
      lock - lock to create reference for, cannot be null
      Returns:
      new reference to given lock instance, never null