公平锁和非公平锁

//如果应用需要确保所有线程都能公平获得执行机会,避免线程饥饿,应选择公平锁;如果应用对线程响应时间有较高要求,且可以接受一定程度的线程饥饿,以提高整体吞吐效率,则应选择非公平锁‌
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("手慢了, 请稍后再试吧");
}
}

posted on 2024-09-13 16:57  五官一体即忢  阅读(3)  评论(0编辑  收藏  举报

导航