本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!
代码地址:https://github.com/xianzhixianzhixian/thread.git
方法isFair()、isHeldByCurrentThread()和isLocked()的用法和区别
1、lock.isFair()方法用来判断lock锁是公平锁还是非公平锁。公平锁是指,线程获得锁的顺序是按其等待锁的先后顺序来的,先来先获得FIFO。反之,非公平锁则是线程随机获得锁的,lock默认是非公平锁。
2、lock.isHeldByCurrentThread()的作用是查询当前线程是否保持此锁定,和lock.hasQueueThread()不同的地方是:lock.hasQueueThread(Thread thread)的作用是判断当前线程是否处于等待lock的状态。
3、lock.isLocked()的作用是查询此锁定是否由任意线程保持。
方法isFair()、isHeldByCurrentThread()和isLocked()的用法示例
ServiceIsFair.java
/**
* lock.isFair()方法用来判断lock锁是公平锁还是非公平锁
* @author: xianzhixianzhixian
* @date: 2019-01-21 20:43
*/
public class ServiceIsFair {
public ReentrantLock lock;
public ServiceIsFair(Boolean isFair) {
this.lock = new ReentrantLock(isFa