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