jvm
百里晓生
这个作者很懒,什么都没留下…
展开
-
Lock接口及其实现
1、Locks包 类层次结构 如下图: 1.1 RenntrantLock 其是可重入锁如下图所示: 运行上图的代码可以知道可以不断锁住没有释放,结果就是线程锁没添加一个lock()数量就多一个。 2、Lock接口方法 如下图: 3、synchronized和Lock的比较 synchronized 优点:1、使用简单,语义清晰,哪里需要点哪里 2、由JVM提供,提供了多种优化方案(锁粗化、...原创 2020-03-14 16:41:02 · 796 阅读 · 0 评论 -
java锁相关理解《云课堂》
JAVA中锁的概念 自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断的判断锁是否能被成功获取,直到获取锁才会退出循环(cas)。 乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改(如cas(0,1)先比较正确就交换失败就自旋) 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁(sy...原创 2020-03-07 16:03:08 · 148 阅读 · 0 评论 -
线程安全之原子性揭秘-《云课堂》
1.原子操作 原子操作可以是一个步骤,也可以是多个步骤操作,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分(不可中断性)。 将整个操作视作一个整体,资源在该操作中保持一致,这是原子性的核心特征。 下面我们先执行一个例子 public class Counter { volatile int i = 0; public void add() { i++; } } public ...原创 2020-03-06 15:05:57 · 116 阅读 · 0 评论 -
线程安全之可见性揭秘-《云课堂》
java 内存模型 (jmm)和jvm运行区区别 java内存模型是Java语言规范(提出规则) 描述多线程程序的规则 规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型(用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内...原创 2020-03-04 11:56:45 · 134 阅读 · 0 评论