Java并发
文章平均质量分 80
miaomiao_Liu
学习过程的摘抄
展开
-
volatile关键字
volatile是一个类型修饰符,被volatile修饰的变量是内存可见的,即如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。是线程同步的方法之一,相较于 synchronised 是一种较轻量的同步策略,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。1.volatile的实现原理 有volatile变量...原创 2018-03-10 21:31:50 · 160 阅读 · 0 评论 -
synchronized的实现原理
利用synchronized实现同步的基础:java中的每一个对象都可以作为锁,synchronized用的锁是存在java对象头里的,具体表现为以下三种形式。 (1)对于普通同步方法,锁是当前实例对象。 (2)对于静态同步方法,锁是当前类的Class对象。 (3)对于同步方法块,锁是synchronized括号例配置的对象。当一个线程试图访问同步代码块时,它首先必须得到锁,退出或者抛出异常...原创 2018-03-05 16:32:47 · 245 阅读 · 0 评论 -
Java实现原子操作
在处理器中会使用总线锁或者缓存锁保证原子性,在java中可以通过锁和循环CAS的方式来实现原子操作1.使用CAS实现原子操作JVM中的CAS操作使用了处理器提供的CMPXCHG指令(交换指令)实现的。自旋CAS实现的基本思路就是 循环进行CAS操作直到成功。2.CAS实现原子操作的三大问题1)ABA问题如果一个值原来是A,变成了B,又变回了A,那么使用CAS进行检查时会发现它的值没有发生改变,而实...原创 2018-03-11 14:58:04 · 610 阅读 · 0 评论