一个可重入的互斥锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。
ReentrantLock 将由最近成功获得锁,并且还没有释放该锁的线程所拥有。当锁没有被另一个线程所拥有时,调用lock 的线程将成功获取该锁并返回。如果当前线程已经拥有该锁,此方法将立即返回。可以使用 isHeldByCurrentThread() 和 getHoldCount() 方法来检查此情况是否发生。
Example:
ReentrantLock localReentrantLock = this.lock;
localReentrantLock.lock();try
{
Object[] arrayOfObject2 = getArray();
int i = arrayOfObject2.length;
Object[] arrayOfObject3 = Arrays.copyOf(arrayOfObject2, i + arrayOfObject1.length);
System.arraycopy(arrayOfObject1, 0, arrayOfObject3, i, arrayOfObject1.length);
setArray(arrayOfObject3);
int j = 1;
return j;
}
finally
{
localReentrantLock.unlock();
}
本文介绍了一个可重入的互斥锁ReentrantLock的基本行为和语义。ReentrantLock提供了比synchronized更强大的功能,详细解释了如何使用lock和unlock方法进行资源保护,以及如何检查线程是否持有锁。
1629

被折叠的 条评论
为什么被折叠?



