org.eclipse.net4j.util.concurrent

## Interface IRWLockManager<OBJECT,CONTEXT>

- All Known Subinterfaces:
    IRWOLockManager<OBJECT,CONTEXT>
  All Known Implementing Classes:
    RWLockManager, RWOLockManager

      public interface IRWLockManager<OBJECT,CONTEXT>

  Support Multiple reads/no write and upgrade lock from read to write. Many context could request `write` lock at the same time. It will privileges first context that has already a `read` lock. If no one has any read lock, it's "first come first serve".
  Since:
    3.0
  Author:
    Eike Stepper

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `IRWLockManager.LockType`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `NO_WAIT`
    `static int` | `WAIT`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `hasLock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock)`
    `boolean` | `hasLockByOthers(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock)`
    `void` | `lock(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToLock, long timeout)`
    `void` | `lock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock, long timeout)`
    `void` | `unlock(CONTEXT context)` Attempts to release all locks(read and write) for a given context.
    `void` | `unlock(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock)` Attempts to release for a given locktype, context and objects.

- - ### Field Detail

    - #### WAIT

          static final int WAIT

      See Also:
        Constant Field Values

    - #### NO_WAIT

          static final int NO_WAIT

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### lock

          void lock(IRWLockManager.LockType type,
                    CONTEXT context,
                    java.util.Collection<? extends OBJECT> objectsToLock,
                    long timeout)
             throws java.lang.InterruptedException

      Throws:
        `java.lang.InterruptedException`

    - #### lock

          void lock(IRWLockManager.LockType type,
                    CONTEXT context,
                    OBJECT objectToLock,
                    long timeout)
             throws java.lang.InterruptedException

      Throws:
        `java.lang.InterruptedException`

    - #### unlock

          void unlock(IRWLockManager.LockType type,
                      CONTEXT context,
                      java.util.Collection<? extends OBJECT> objectsToUnlock)

      Attempts to release for a given locktype, context and objects.
      Throws:
        `java.lang.IllegalMonitorStateException` - Unlocking objects without lock.

    - #### unlock

          void unlock(CONTEXT context)

      Attempts to release all locks(read and write) for a given context.

    - #### hasLock

          boolean hasLock(IRWLockManager.LockType type,
                          CONTEXT context,
                          OBJECT objectToLock)

    - #### hasLockByOthers

          boolean hasLockByOthers(IRWLockManager.LockType type,
                                  CONTEXT context,
                                  OBJECT objectToLock)

Copyright (c) 2014 Eike Stepper (Berlin, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html