专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java线程关键字,volatile关键字

Java线程关键字,volatile关键字

更新时间:2020-06-10 16:12:09 来源:动力节点 浏览1557次

Java™语言包含两种内在的同步机制:同步块(或方法)和volatile变量。这两种机制的提出都是为了实现代码线程的安全性。其中Volatile变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。

Java线程关键字,volatile关键字

之所以要单独提出volatile这个不常用的关键字原因是这个关键字在高性能的多线程程序中也有很重要的用途,只是这个关键字用不好会出很多问题。

首先考虑一个问题,为什么变量需要volatile来修饰呢?

要搞清楚这个问题,首先应该明白计算机内部都做什么了。比如做了一个i++操作,计算机内部做了三次处理:读取-修改-写入。

同样,对于一个long型数据,做了个赋值操作,在32系统下需要经过两步才能完成,先修改低32位,然后修改高32位。

假想一下,当将以上的操作放到一个多线程环境下操作时候,有可能出现的问题,是这些步骤执行了一部分,而另外一个线程就已经引用了变量值,这样就导致了读取脏数据的问题。

通过这个设想,就不难理解volatile关键字了。

volatile可以用在任何变量前面,但不能用于final变量前面,因为final型的变量是禁止修改的。也不存在线程安全的问题。

Java线程关键字,volatile关键字

Java技术相关内容

Java Volatile关键字使用场景:http://www.bjpowernode.com/tutorial_java_advance/1262.html

Java中Volatile关键字:http://www.bjpowernode.com/tutorial_java_advance/1261.html

以上就是动力节点java培训机构的小编针对“Java线程关键字,volatile关键字”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>