Package com.sun.jts.CosTransactions
Class RWLock
- java.lang.Object
-
- com.sun.jts.CosTransactions.RWLock
-
public class RWLock extends Object
A RWLock provides concurrency control for multiple readers single writer access patterns. This lock can provide access to multiple reader threads simultaneously as long as there are no writer threads. Once a writer thread gains access to the instance locked by a RWLock, all the reader threads wait till the writer completes accessing the instance in question.A RWLock is extremely useful in scenarios where there are lots more readers and very few writers to a data structure. Also if the read operation by the reader thread could take significant amount of time (binary search etc.)
The usage of Lock can be see as under:
public class MyBTree { private RWLock lock = new Lock(); ..... ..... public Object find(Object o) { try { lock.acquireReadLock(); ....perform complex search to get the Object ... return result; } finally { lock.releaseReadLock(); } } public void insert(Object o) { try { lock.acquireWriteLock(); ....perform complex operation to insert object ... } finally { lock.releaseWriteLock(); } } }
- Author:
- Dhiru Pandey 8/7/2000
-
-
Constructor Summary
Constructors Constructor Description RWLock()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
acquireReadLock()
This method is used to acquire a read lock.void
acquireWriteLock()
This method is used to acquire a write lock.boolean
isWriteLocked()
isWriteLocked returns true if the RWLock is in a write locked state.void
releaseReadLock()
This method is used to release a read lock.void
releaseWriteLock()
This method is used to release a write lock.
-
-
-
Method Detail
-
acquireReadLock
public void acquireReadLock()
This method is used to acquire a read lock. If there is already a writer thread accessing the object using the RWLock then the reader thread will wait until the writer completes its operation
-
acquireWriteLock
public void acquireWriteLock()
This method is used to acquire a write lock. If there are already reader threads accessing the object using the RWLock, then the writer thread will wait till all the reader threads are finished with their operations.
-
isWriteLocked
public boolean isWriteLocked()
isWriteLocked returns true if the RWLock is in a write locked state.
-
releaseReadLock
public void releaseReadLock()
This method is used to release a read lock. It also notifies any waiting writer thread that it could now acquire a write lock.
-
releaseWriteLock
public void releaseWriteLock()
This method is used to release a write lock. It also notifies any pending readers that they could now acquire the read lock. If there are no reader threads then it will try to notify any waiting writer thread that it could now acquire a write lock.
-
-