//如果应用需要确保所有线程都能公平获得执行机会,避免线程饥饿,应选择公平锁;如果应用对线程响应时间有较高要求,且可以接受一定程度的线程饥饿,以提高整体吞吐效率,则应选择非公平锁标签:book,lockBorrow,公平,new,线程,借阅 From: https://www.cnblogs.com/privateLogs/p/18412513
private final Lock lockBorrow = new ReentrantLock(true);//true为公平锁,false为非公平锁
@GetMapping("/someMethod")
public void someMethod() {
// 1. 校验当前学生是否有有借阅资格
if (lockBorrow.tryLock()) {//根据尝试获取锁的值来判断具体执行的代码
try {
// 2. 校验图书状态是否为0-闲置
// 3. 向book_borrowing表插入一条【待审核】借阅记录
// 4. 修改book表的图书状态为1-借阅中
} finally {
lockBorrow.unlock();
}
} else {
throw new BusinessException("手慢了, 请稍后再试吧");
}
}