Package 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
Description
`static enum`
`IRWLockManager.LockType`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`NO_WAIT`
Deprecated.
`static final int`
`WAIT`
Deprecated.

## Method Summary

Modifier and Type
Method
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, 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, Collection<? extends OBJECT> objectsToUnlock)`
Attempts to release for a given lock type, context and objects.

## Field Details

### WAIT

@Deprecated static final int WAIT
Deprecated.

See Also:
  - Constant Field Values

### NO_WAIT

@Deprecated static final int NO_WAIT
Deprecated.

See Also:
  - Constant Field Values

## Method Details

### lock

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

Throws:
  `InterruptedException`

### lock

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

Throws:
  `InterruptedException`

### unlock

void unlock(IRWLockManager.LockType type, CONTEXT context, Collection<? extends OBJECT> objectsToUnlock)
Attempts to release for a given lock type, context and objects.

Throws:
  `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)