面试题答案
一键面试- 延长锁的超时时间
- 优点:实现简单,只需要适当增加锁的超时时间,降低业务未执行完锁就过期的概率。
- 缺点:如果业务执行时间过长,会导致锁长时间被占用,其他进程等待时间过长,降低系统并发性能;而且难以预估业务执行时间,设置过长或过短都不合适。
- 使用自动续期机制
- 优点:在业务执行过程中,通过后台线程定期检查锁的剩余时间,当剩余时间较短时自动延长锁的有效期,能较好地保证业务执行过程中锁不会过期,同时不影响系统并发性能。
- 缺点:实现相对复杂,需要额外的线程或任务调度机制来处理续期操作,增加了系统的复杂度和维护成本。
- 在释放锁时进行检查
- 优点:在释放锁时,检查当前持有锁的进程是否是自己,避免误释放其他进程获取到的锁,一定程度上保证数据一致性。实现相对不复杂。
- 缺点:不能完全避免业务未执行完锁过期其他进程获取锁的情况,只是在释放锁阶段进行了额外的保障,无法从根本上解决数据不一致问题。
- 使用Redisson的可重入锁
- 优点:Redisson提供了可重入锁的实现,并且内部有看门狗机制,能自动续期,无需自己手动实现复杂的续期逻辑,大大简化开发,同时保证锁的可靠性。
- 缺点:引入了Redisson框架,增加了项目的依赖,如果对框架不熟悉,可能会在集成和维护过程中遇到问题。