05-结果分析
结果分析
在本节中,由于 ReentrantLock
类中包含了许多受保护的数据,因此我们将利用 MyLock
类继承 ReentrantLock
,以获得父类中受保护的信息。 MyLock
类实现的方法如下所示。
getOwnerName()
:在Lock
对象的作用下,一次只能有一个线程可以访问临界区。因此在锁对象中保存了当前执行临界区线程的相关信息,通过ReentrantLock
上受保护的getOwner()
方法获得当前线程的信息。getThreads():
当前临界区已经有线程正在执行,试图进入临界区的其他线程将在执行临界区代码之前进入休眠状态。通过ReentrantLock
类的getQueued-Threads()
方法,可以获得等待临界区的线程列表。
除此之外,在 ReentrantLock
类中还包含了其他方法的实现。
hasQueuedThreads()
:该方法返回一个布尔值,它指示当前是否有线程正在等待获取调用ReentrantLock
。getQueueLength()
:该方法返回正在等待ReentrantLock
锁的线程数量。isLocked()
:该方法返回一个布尔值,它指示当前ReentrantLock
锁是否已经由线程拥有。isFair():
该方法返回一个布尔值,它指示当前ReentrantLock
锁是否已激活公平模式。