JUC笔记

下面来具体讲解volatile的两条实现原则。

1)Lock前缀指令会引起处理器缓存回写到内存

2)一个处理器的缓存回写到内存会导致其他处理器的缓存无效。


利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现

为以下3种形式。

·对于普通同步方法,锁是当前实例对象。

·对于静态同步方法,锁是当前类的Class对象。

·对于同步方法块,锁是Synchonized括号里配置的对象。


锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状

态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级



处理器如何实现原子操作

第一个机制是通过总线锁保证原子性

第二个机制是通过缓存锁定来保证原子性

 

Java如何实现原子操作

在Java中可以通过循环CAS的方式来实现原子操作。

 

CAS实现原子操作的三大问题

1)ABA问题。2)循环时间长开销大。3)只能保证一个共享变量的原子操作。

 

 

在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步

线程之间的通信机制有两种:共享内存消息传递。

 

Java线程之间的通信由Java内存模型(本文简称为JMM)控制

你可能感兴趣的:(JUC笔记)