博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入分析Volatile的实现原理
阅读量:5925 次
发布时间:2019-06-19

本文共 584 字,大约阅读时间需要 1 分钟。

hot3.png

引言

在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。

它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正确的使用Volatile变量。

Volatile的官方定义

Java语言规范第三版中对volatile的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。

为什么要使用Volatile

Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度。

http://www.infoq.com/cn/articles/ftf-java-volatile

转载于:https://my.oschina.net/forrest420/blog/498587

你可能感兴趣的文章
一般地
查看>>
JAVA语言基础-面向对象(IO:IO字符流、递归)
查看>>
Web App 和 Native App,哪个是趋势?
查看>>
ActiveMQ与spring整合
查看>>
jquery文档加载完毕后执行的几种写法
查看>>
productFlavors设置signingConfig不管用的问题
查看>>
shell脚本注意点
查看>>
LinkedHashMap 与 HashMap区别
查看>>
面试专题(Mysql及Mongodb)
查看>>
一篇年薪60万的JVM性能调优文章
查看>>
box-shadow阴影合集
查看>>
微信小程序开发系列五:微信小程序中如何响应用户输入事件
查看>>
善用Object.defineProperty巧妙找到修改某个变量的准确代码位置
查看>>
CDN的强大功能
查看>>
数据库分库分表、读写分离的原理和实现,以及使用场景
查看>>
自然语言处理怎么最快入门?
查看>>
awk
查看>>
centOS下安装jdk1.8
查看>>
ZBLOG-ASP2.2如何给图片增加ALT标签说明文字?
查看>>
阿里云对象存储OSS支持版本管理特性
查看>>