摘要:
public class CASDemo { public static void main(String[] args){ AtomicInteger atomicInteger = new AtomicInteger(5); System.out.println(atomicInteger.co 阅读全文
摘要:
乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。1.乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类 阅读全文
摘要:
独占锁:独占锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排他锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程即能读数据又能修改数据。 ReentrantLock 和 synchronized 都是独占锁 共享锁:共享锁是指该锁可被多个线程所持有。如果线程T对数据A 阅读全文
摘要:
自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,如果长时间使用这种锁会造成系统负载很大,耗费性能,阻止了其他线程的运行和 阅读全文
摘要:
可重入锁,也叫递归锁 可重入锁:指的是同一个线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码,在同一个线程在外层方法获取锁的时候,进入内层方法会自动获取锁 种类:ReentrantLock 和 synchronized 都是可重入锁 作用:避免死锁 注意点:用了锁,一定要记得开锁和关锁,lo 阅读全文
摘要:
公平锁与非公平锁 # 公平锁与非公平锁公平锁:多个线程按照申请锁的顺序来获取锁,先来后到,在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程等待队列的第一个,就占有锁,否则就会加入到等待队列,以后会按照FIFO的规则从队列中取。 非公平锁:多个线程获取锁的顺序并不是按 阅读全文
摘要:
# 常用词- watch:会持续收到该项目的动态- fork:复制某个项目到自己的GitHub仓库中- star:点赞- clone:将项目下载至本地- follow:关注你感兴趣的作者,会收到他们的动态 # in限制搜索范围使用方法:搜索的关键词 in: name / description / 阅读全文