0
点赞
收藏
分享

微信扫一扫

阿里P6面经之避免锁释放的“副作用”


阿里P6面经之避免锁释放的“副作用”_css3

面试题

阿里P6面经之避免锁释放的“副作用”_css3_02

锁被自动释放导致的重复逻辑执行了,你将如何发现和解决这问题?

阿里P6面经之避免锁释放的“副作用”_css3

讲解

阿里P6面经之避免锁释放的“副作用”_css3_02

锁释放和重复执行问题

阿里P6面经之避免锁释放的“副作用”_css3_05

锁建议使用synchronized,在JDK1.6后,synchronized与Lock性能上差距很小了(优化了很多,自旋锁,自适应自旋锁、偏向锁,轻量级锁等),synchronized也不用程序获取和释放锁,同步代码块是通过monitorenter monitorexit实现的,同步方法是方法头中有ACC_SYNCHRONIZED标志;在分布式场景下,可以考虑etcd,etcd支持锁的自动续期等;

重复执行:首先在锁的使用场景下做好处理,尽量避免重复执行,但业务层面一定要做好幂等。

锁超时自动释放导致重复执行

阿里P6面经之避免锁释放的“副作用”_css3_05

可以用锁续期,如redisson的watchdog;或者保证业务的幂等性,重复执行也没问题。

阿里P6面经之避免锁释放的“副作用”_微软_07

阿里P6面经之避免锁释放的“副作用”_css3_08



举报

相关推荐

0 条评论