项目中加锁的一些真实应用场景
使用Java进行web开发的项目中,时常会使用到加锁的场景。加锁的操作主要是为了防止某一个操作出现重复
的情况导致数据混乱;或者是为了避免在进行某些复杂业务操作的时候,会同时操作多张表,导致业务数据出现问题。
为了解决这些问题,才在项目中考虑引入加锁的机制,在高并发下让业务流程能够正常执行,不出现错误。自己
现在参与开发的项目中,也在使用加锁的机制来处理各种问题,下面就聊聊加锁的一些真实应用场景。
.a.第一个场景是有一个定时任务在执行的时候使用了加锁的操作。比如更新也一些业务数据,如超时处理,过期处理
等等,变更一些状态。
.b.第二个场景是MQ同步消息,部分操作加锁。因为MQ同步的消息很多,只有部分同步的操作加锁了。
.c.第三个场景是定时任务进行统计任务计算的时候,或者是手动触发的时候使用加锁操作。
.d.第四个场景是从数据库中定时、频繁的加载数据到缓存中的时候使用加锁操作;
.e.第五个场景是将缓存中的数据保存到数据库中的时候使用加锁的操作。
这些使用加锁操作的场景,是目前的项目中真实使用的。主要也是为了避免某些操作出现重复,或者业务操作出现错误
才加的锁,是为了程序能够正常运行而考虑的一种设计方式。有一点需要注意的是,如果加锁后程序执行没有抛出异常
还好,如果抛出异常也需要解除锁,避免阻塞程序后续的执行。解决方法就是在finally中进行解锁的操作,不管核心
代码的执行情况如何,最终都会解锁。