1. 锁的分类
乐观锁与悲观锁
- 乐观锁:在并发环境下,一般情况认为是属于读多写少的情况,没有数据冲突,当对共享资源发生写操作的时候,会先检测当前版本的数据与先前版本数据是否一致,如果不一致说明有其他线程已经发生写操作,需要重复进行读取然后检测再尝试修改,比如CAS机制,zk最优先通过最新主版本的策略来选举master,数据库根据版本更新数据等
- 悲观锁:在并发环境下,认为竞争非常激烈,于是在对共享资源发生写操作的时候先加上锁,然后执行临界区代码完成操作再释放锁,其他线程获取相同的锁需要进行等待,处于阻塞状态
- 乐观锁与悲观锁示例伪代码:
// 使用java以及数据库的操作方式演示乐观锁与悲观锁
// optimistic.java
AtomicInteger count = new AtomicInteger();
本文详细介绍了并发编程中的锁技术,包括乐观锁与悲观锁、可重入锁与递归锁、公平锁与非公平锁、共享锁与独占锁、自旋锁以及分片加锁的原理。此外,还讨论了JVM锁优化技术,如减少锁持有时间、锁粗化和锁消除,旨在提高并发性能。
订阅专栏 解锁全文

2245

被折叠的 条评论
为什么被折叠?



