Java关键字系列 — volatile、synchronized、lock

原创 2017年01月04日 00:01:57

volatile、synchronized和lock是Java应对并发编程提出的三个比较常用的关键字,下面具体讲一下三个关键字的特征、具体应用场景。

volatile

控制层面
内存和CPU高速缓存

控制机制
控制主内存和CPU高速缓存的一致性,当一个线程更改了某个内存变量时,会强制更新主内存,并通知其他CPU从主内存中重新获取变量值。

应用场景
1. 对变量的写操作不依赖于当前值
2. 该变量没有包含在具有其他变量的不变式中

补充描述
一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
1. 可见性: 一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2. 有序性:禁止进行指令重排序

synchronized

控制层面
JVM层面

控制机制
控制某个方法的执行者或者是某个变量的拥有者。如果是方法锁,则同一时间只能有一个线程使用该方法,其他线程阻塞;如果是对象所,则哪个线程最先拥有锁对象,则哪个线程先执行,其他线程阻塞。

应用场景
1. 需要保证系统的原子性
2. 锁资源竞争不是很激烈

lock

控制层面
CPU总线

控制机制
控制线程的执行的CPU,在总线之下只允许一个线程的CPU可以访问某个内存,当某个线程执行结束之后其他线程才能访问变量资源

应用场景
1. 需要保证系统的原子性
2. 锁资源竞争相对较激烈

博客参考:http://www.cnblogs.com/dolphin0520/p/3920373.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java多线程 synchronized volatile Atomic LOCK的使用

/** * @Package * @Description * @author chenj * @date 2015-9-14 下午11:09:40 * @version V...

java中volatile、synchronized和lock解析

1、概述在研究并发程序时,我们需要了解java中关键字volatile和synchronized关键字的使用以及lock类的用法。首先,了解下java的内存模型:(1)每个线程都有自己的本地内存空间(...

java多线程并发(一)Semaphore,volatile,synchronized ,Lock, CyclicBarrier和CountDownLatch

在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:1.原子性  原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,...

Java——多线程总结、ThreadLocal/Volatile/synchronized/Atomic关键字

当线程被创建并启动之后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在其生命周期中,要经过”新建(New)”、”就绪(Runnable)”、”运行(Running’)”、”阻塞(Blocke...

学习java基础关键字之synchronized和volatile

synchronized、volatile、多线程

Java 关键字volatile 与 synchronized 作用与区别

1、volatile     它所修饰的变量不保留拷贝,直接访问主内存中的。    在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会...

从Java内存模型理解synchronized、volatile和final关键字

你是否真正理解并会用volatile, synchronized, final进行线程间通信呢,如果你不能回答下面的几个问题,那就说明你并没有真正的理解: 1、对volatile变量的操作一定具有原子...

Java 关键字volatile 与 synchronized 作用与区别

1,volatile    volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的。   在Java内存模型中,有main memory,每个线程也有自己的memory (例如...

java多线程之synchronized和volatile关键字

synchronized同步方法脏读在多个线程对同一个对象中的实例变量进行并发访问的时候,取到的数据可能是被更改过的,称之为“脏读”,这就是非线程安全的。解决的方法为synchronized关键字进行...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)