锁的概念
可重入
不可重入
公平锁
非公平锁
锁中断
通过一个故事理解可重入锁的机制 - 小勇DW3 - 博客园
独占锁、共享锁、更新锁,乐观锁、悲观锁 - gds通用软件开发系统 - 博客园
独占锁
共享锁
乐观锁
悲观锁
排它锁 (mysql中的行锁 间隙锁 next-key锁)
更新锁
死锁
学过操作系统的朋友都知道产⽣死锁必须具备以下四个条件:
- 互斥条件:该资源任意⼀个时刻只由⼀个线程占⽤。
- 请求与保持条件:⼀个进程因请求资源⽽阻塞时,对已获得的资源保持不放。
- 不剥夺条件:线程已获得的资源在末使⽤完之前不能被其他线程强⾏剥夺,只有⾃⼰使⽤完毕
后才释放资源。 - 循环等待条件:若⼲进程之间形成⼀种头尾相接的循环等待资源关系。
我上⾯说了产⽣死锁的四个必要条件,为了避免死锁,我们只要破坏产⽣死锁的四个条件中的其
中⼀个就可以了。现在我们来挨个分析⼀下: - 破坏互斥条件 :这个条件我们没有办法破坏,因为我们⽤锁本来就是想让他们互斥的(临界
资源需要互斥访问)。 - 破坏请求与保持条件 :⼀次性申请所有的资源。
- 破坏不剥夺条件 :占⽤部分资源的线程进⼀步申请其他资源时,如果申请不到,可以主动释
放它占有的资源。 - 破坏循环等待条件 :靠按序申请资源来预防。按某⼀顺序申请资源,释放资源则反序释放。
破坏循环等待条件。
意向锁
读锁
无锁、偏向锁、轻量级锁、重量级锁
偏向锁、轻量级锁、重量级锁的升级以及区别_Java_stalary的博客-CSDN博客
监视器锁
经典解释监视器和对象锁Java冯立彬的博客-CSDN博客