Java.Util.Concurrent.Locks.ReentrantLock.TryLock Method
Acquires the lock if it is not held by another thread within the given waiting time and the current thread has not been Java.Lang.Thread.Interrupt.

Syntax

[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryLock (long timeout, Java.Util.Concurrent.TimeUnit unit)

Parameters

timeout
the time to wait for the lock
unit
the time unit of the timeout argument

Returns

Documentation for this section has not yet been entered.

Exceptions

TypeReason
Java.Lang.InterruptedExceptionif the current thread is interrupted
Java.Lang.NullPointerExceptionif the time unit is null

Remarks

Acquires the lock if it is not held by another thread within the given waiting time and the current thread has not been Java.Lang.Thread.Interrupt.

Acquires the lock if it is not held by another thread and returns immediately with the value true, setting the lock hold count to one. If this lock has been set to use a fair ordering policy then an available lock will not be acquired if any other threads are waiting for the lock. This is in contrast to the ReentrantLock.TryLock method. If you want a timed tryLock that does permit barging on a fair lock then combine the timed and un-timed forms together:

java Example

if (lock.tryLock() ||
     lock.tryLock(timeout, unit)) {
   ...
 }

If the current thread already holds this lock then the hold count is incremented by one and the method returns true.

If the lock is held by another thread then the current thread becomes disabled for thread scheduling purposes and lies dormant until one of three things happens:

  • The lock is acquired by the current thread; or
  • Some other thread Java.Lang.Thread.Interrupt the current thread; or
  • The specified waiting time elapses

If the lock is acquired then the value true is returned and the lock hold count is set to one.

If the current thread:

then Java.Lang.InterruptedException is thrown and the current thread's interrupted status is cleared.

If the specified waiting time elapses then the value false is returned. If the time is less than or equal to zero, the method will not wait at all.

In this implementation, as this method is an explicit interruption point, preference is given to responding to the interrupt over normal or reentrant acquisition of the lock, and over reporting the elapse of the waiting time.

[Android Documentation]

Requirements

Namespace: Java.Util.Concurrent.Locks
Assembly: Mono.Android (in Mono.Android.dll)
Assembly Versions: 0.0.0.0
Since: Added in API level 1