当前位置:嗨网首页>书籍在线阅读

05-结果分析

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

结果分析

在本节中,由于 ReentrantLock 类中包含了许多受保护的数据,因此我们将利用 MyLock 类继承 ReentrantLock ,以获得父类中受保护的信息。 MyLock 类实现的方法如下所示。

  • getOwnerName() :在 Lock 对象的作用下,一次只能有一个线程可以访问临界区。因此在锁对象中保存了当前执行临界区线程的相关信息,通过 ReentrantLock 上受保护的 getOwner() 方法获得当前线程的信息。
  • getThreads(): 当前临界区已经有线程正在执行,试图进入临界区的其他线程将在执行临界区代码之前进入休眠状态。通过 ReentrantLock 类的 getQueued-Threads() 方法,可以获得等待临界区的线程列表。

除此之外,在 ReentrantLock 类中还包含了其他方法的实现。

  • hasQueuedThreads() :该方法返回一个布尔值,它指示当前是否有线程正在等待获取调用 ReentrantLock
  • getQueueLength() :该方法返回正在等待 ReentrantLock 锁的线程数量。
  • isLocked() :该方法返回一个布尔值,它指示当前 ReentrantLock 锁是否已经由线程拥有。
  • isFair(): 该方法返回一个布尔值,它指示当前 ReentrantLock 锁是否已激活公平模式。