1.volatile是一个类型修饰符,它是被设计用来修饰被不同线程访问和修改的变量。
2.被volatile类型定义的变量,系统每次用到它时,都是直接从对应的内存中提取,而不会利用缓存。这样就防止了多线程操作同一变量时,所产生的不一致性。
3.在使用了volatile修饰成员变量后,所有线程在任何时候所看到的变量的值都是相同的。
下面给出一个使用volatile的实例。
public class MyThread implements Runnable{ private volatile Boolean flag; public void stop(){ flag = false; } public void run(){ while(flag){ //TODO } } }
以上代码实例是用来停止线程最常用的一种方法,如果boolean类型的变量没有被声明成volatile,那么,当这个线程的run方法在判断flag的值的时候,使用的有可能是缓存中的值,此时程序就不能获取其他线程对flag的操作。程序就会和想象中的不一致。
相关推荐
java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java ...
主要讲述java线程volatile关键字
【Java面试题】volatile的作用
volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。这篇文章主要介绍了Java中volatile关键字的作用与用法详解的相关资料,需要的朋友可以参考下
volatile是java中的关键词之一,这篇文章主要给大家介绍了关于Java中volatile关键字的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
本篇文章给大家通过实例分享了Java中Volatile的作用,有兴趣的朋友可以学习参考下。
violate java_Java 之 volatile 超级详解
Java并发编程:volatile关键字解析
java语言的volatile教程,java语言的volatile关键字到底怎么用
从JUC中的AQS引入,讲解Java volatile与AQS锁内存可见性
主要为大家解析了java中volatile关键字,经常有人把volatile关键字和synchronized或者lock混淆,本文就为大家好好区分,感兴趣的小伙伴们可以参考一下
volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上...
主要介绍了java 中volatile和lock原理分析的相关资料,需要的朋友可以参考下
java volatile 关键字 学习
这一点我们在第 15 节课和第 16 节课 已经分析过了。为了解决这个问题,Java 语言在规范中做出了明确的规定,也就是在 JSR 133 文档中规定了 Ja
volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执行的有序性。这篇文章主要介绍了Java里volatile关键字是什么意思的相关资料,需要的朋友可以参考下
volatile这个关键字,不仅仅在Java语言中有,在很多语言中都有的,而且其用法和语义也都是不尽相同的。这篇文章主要介绍了Java中的volatile关键字,需要的朋友可以参考下
synchronized是阻塞式同步,在线程...这个实际对普通变量没有规定的,而针对volatile修饰的变量给Java虚拟机特殊的约定,线程对volatile变量的修改会立刻被其他线程所感知,即不会出现数据脏读,从而保证数据的可见性。
主要介绍了Java线程编程中的volatile关键字的作用,针对其禁止进行指令重排序和读写内存方面着重讲解,需要的朋友可以参考下
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 ...