深入了解Java中乐观锁和悲观锁的秘密
今天要和大家聊聊一个在Java开发中常见的热门话题——乐观锁和悲观锁的实现。作为程序员的我们,面试中经常会被问到这个问题,那么它们究竟是怎么一回事呢?让我们一起来揭开这个神秘的面纱吧!
面试官:如何排查死锁?
我们创建两个锁和两个线程,让线程 1 先拥有锁 A,然后在 1s 后尝试获取锁 B,同时我们启动线程 2,让它先拥有锁 B,然后在 1s 之后尝试获取锁 A,这时就会出现相互等待对方释放锁的情况,从而造成死锁的问题,
数据库锁的12连问,抗住!
如果查询条件的是唯一索引,或者主键时,Next-Key Lock会降为Record Lock。如果是普通索引,将对下一个键值加上gap lock,其实就是对下一个键值的范围为加锁。gap lock间隙锁,就是为了解决幻读问题而设计出来的。
聊聊分布式锁的多种实现!
分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。