ReentrantLock


ReentrantLock java.util.concurrent.locks

Java 5.0 serializable

This class implements the Lock interface and adds instrumentation methods to determine what thread currently holds the lock, to return the number of threads waiting to acquire the lock or waiting on an associated Condition , and to test whether a specified thread is waiting to acquire the lock.

The name of this class includes the term "reentrant" because the thread that holds the lock can call any of the locking methods again, and they return immediately without blocking. isHeldByCurrentThread( ) tests whether the current thread already holds the lock. getHoldCount( ) returns the number of times that the current thread has acquired this lock. unlock( ) must be called this number of times before the lock is actually relinquished.

A "fair" lock may be created by passing true to the ReentrantLock( ) constructor. If you do this, the lock will always be granted to the thread that has been waiting for it the longest.

Figure 16-105. java.util.concurrent.locks.ReentrantLock

 public class  ReentrantLock  implements Lock, Serializable {  // Public Constructors  public  ReentrantLock  ( );        public  ReentrantLock  (boolean  fair  );  // Public Instance Methods  public int  getHoldCount  ( );  default:0  public final int  getQueueLength  ( );  default:0  public int  getWaitQueueLength  (Condition  condition  );        public final boolean  hasQueuedThread  (Thread  thread  );        public final boolean  hasQueuedThreads  ( );        public boolean  hasWaiters  (Condition  condition  );        public final boolean  isFair  ( );  default:false  public boolean  isHeldByCurrentThread  ( );  default:false  public boolean  isLocked  ( );  default:false   // Methods Implementing Lock  public void  lock  ( );        public void  lockInterruptibly  ( ) throws InterruptedException;        public Condition  newCondition  ( );        public boolean  tryLock  ( );        public boolean  tryLock  (long  timeout  , java.util.concurrent.TimeUnit  unit  )         throws InterruptedException;        public void  unlock  ( );  // Public Methods Overriding Object  public String  toString  ( );  // Protected Instance Methods  protected Thread  getOwner  ( );        protected java.util.Collection<Thread>  getQueuedThreads  ( );        protected java.util.Collection<Thread>  getWaitingThreads  (Condition  condition  );   } 



Java In A Nutshell
Java In A Nutshell, 5th Edition
ISBN: 0596007736
EAN: 2147483647
Year: 2004
Pages: 1220

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net