下面来具体讲解volatile的两条实现原则。
1)Lock前缀指令会引起处理器缓存回写到内存
2)一个处理器的缓存回写到内存会导致其他处理器的缓存无效。
利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现
为以下3种形式。
·对于普通同步方法,锁是当前实例对象。
·对于静态同步方法,锁是当前类的Class对象。
·对于同步方法块,锁是Synchonized括号里配置的对象。
锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状
态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级
处理器如何实现原子操作
第一个机制是通过总线锁保证原子性
第二个机制是通过缓存锁定来保证原子性
Java如何实现原子操作
在Java中可以通过锁和循环CAS的方式来实现原子操作。
CAS实现原子操作的三大问题
1)ABA问题。2)循环时间长开销大。3)只能保证一个共享变量的原子操作。
在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步
线程之间的通信机制有两种:共享内存和消息传递。
Java线程之间的通信由Java内存模型(本文简称为JMM)控制
网友评论