org.jgroups.blocks.locking

## Class LockService

- java.lang.Object
- - org.jgroups.blocks.locking.LockService

    public class LockService
    extends java.lang.Object

LockService is the main class for to use for distributed locking functionality. LockService needs access to a `JChannel` and interacts with a locking protocol (e.g. `CENTRAL_LOCK`) via events.

When no locking protocol is seen on the channel's stack, LockService will throw an exception at startup. An example of using LockService is:

       JChannel ch=new JChannel("/home/bela/locking.xml); // locking.xml needs to have a locking protocol towards the top
       LockService lock_service=new LockService(ch);
       ch.connect("lock-cluster");
       Lock lock=lock_service.getLock("mylock");
       lock.lock();
       try {
          // do something with the lock acquired
       }
       finally {
          lock.unlock();
       }

Note that, contrary to the semantics of `Lock`, unlock() can be called multiple times; after a lock has been released, future calls to unlock() have no effect.

Since:
  2.12
Author:
  Bela Ban

### Nested Class Summary

Nested Classes
`protected class` `LockService.LockImpl`

### Field Summary

Fields
`protected JChannel` `ch`
`protected Locking` `lock_prot`

### Constructor Summary

Constructors
Constructor and Description
`LockService()`
`LockService(JChannel ch)`

### Method Summary

Methods
`void` `addLockListener(LockNotification listener)`
`java.util.concurrent.locks.Lock` `getLock(java.lang.String lock_name)`
`java.lang.String` `printLocks()`
`void` `removeLockListener(LockNotification listener)`
`void` `setChannel(JChannel ch)`
`void` `unlockAll()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### ch

    protected JChannel ch

#### lock_prot

    protected Locking lock_prot

### Constructor Detail

#### LockService

    public LockService()

#### LockService

    public LockService(JChannel ch)

### Method Detail

#### setChannel

    public void setChannel(JChannel ch)

#### getLock

    public java.util.concurrent.locks.Lock getLock(java.lang.String lock_name)

#### unlockAll

    public void unlockAll()

#### addLockListener

    public void addLockListener(LockNotification listener)

#### removeLockListener

    public void removeLockListener(LockNotification listener)

#### printLocks

    public java.lang.String printLocks()