自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待, 然后不断的判断是否能够被成功获取,知道获取到锁才会退出循环。
乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重新修改。
悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。
独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能再加锁。(单写)
共享锁(读):给资源加上读锁后只能读不能改,其他线程也只能加读锁,不能加写锁。多读()
可重复锁、不可重入锁: 线程拿到一把锁之后,可以自由进入同一把锁所同步的其他代码
公平锁、非公平锁: 争抢锁的顺序,如果是按先来后到,则为公平。
beijing/BandEliminate.java at master · zhangwangyan/beijing · GitHub

并发控制:自旋锁、乐观锁与悲观锁解析
本文深入探讨了并发控制中的三种锁机制:自旋锁、乐观锁和悲观锁。自旋锁让线程在无法获取锁时持续尝试,直到获得为止;乐观锁假设不会有冲突,在修改数据时才检查一致性;悲观锁则预先假设存在并发冲突,从读取数据开始就加锁。理解这些锁机制对于优化多线程程序至关重要。
599

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



