1


2
// service代码
public void test() {
// 简单的select + update 模拟业务场景
Model model = mapper.choseOne("99");
// 实现 level -- 操作
Model updater = new Model();
updater.setId("99");
updater.setLevel(model.getLevel() - 1);
mapper.updateOne(updater);
}复制

// service代码
private Lock lock = new ReentrantLock();
public void test() {
try {
//加锁
lock.lock();
// 简单的select + update 模拟业务场景
Model model = mapper.choseOne("99");
// 实现 level -- 操作
Model updater = new Model();
updater.setId("99");
updater.setLevel(model.getLevel() - 1);
mapper.updateOne(updater);
} finally {
lock.unlock(); // 解锁
}
}复制

// service代码
private Lock lock = new ReentrantLock();
@Transactional
public void test() {
try {
//加锁
lock.lock();
// 简单的select + update 模拟业务场景
Model model = mapper.choseOne("99");
// 实现 level -- 操作
Model updater = new Model();
updater.setId("99");
updater.setLevel(model.getLevel() - 1);
mapper.updateOne(updater);
} finally {
lock.unlock(); // 解锁
}
}复制


3
private Lock lock = new ReentrantLock();
@Transactional
public void test1() {
// 简单的select + update 模拟业务场景
Model model = mapper.choseOne("99");
// 实现 level -- 操作
Model updater = new Model();
updater.setId("99");
updater.setLevel(model.getLevel() - 1);
mapper.updateOne(updater);
}
@Autowired
@Lazy
private CommonService commonService;
public void test() {
try {
// 加锁
lock.lock();
// 自己注入自己,以使用到其代理类
commonService.test1();
} finally {
lock.unlock(); // 解锁
}
}复制

// service代码
private Lock lock = new ReentrantLock();
@Autowired
private PlatformTransactionManager transactionManager;
public void test() {
try {
//加锁
lock.lock();
// 编程式事务
TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
// 简单的select + update 模拟业务场景
Model model = mapper.choseOne("99");
// 实现 level -- 操作
Model updater = new Model();
updater.setId("99");
updater.setLevel(model.getLevel() - 1);
mapper.updateOne(updater);
// 在锁中提交
transactionManager.commit(status);
} finally {
lock.unlock(); // 解锁
}
}复制

---THE END---
文章转载自程序员恰恰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。