深入分析Volatile的实现原理
2015-08-28 00:00
411 查看
摘要: 引言
在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正确的使用Volatile变量。
它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正确的使用Volatile变量。
在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正确的使用Volatile变量。
引言
在多线程并发编程中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相关文章推荐
- Linux insides笔记(二)
- HTTP header中Cache-control的值
- OpenVAS漏洞扫描基础教程之创建用户组与创建角色
- Kail Linux渗透测试教程之Recon-NG框架
- sqlplus无法退格 (backspace)
- golang Unmarshal 小问题
- 树莓派安装TP-link wn725n网卡驱动
- android webview使用记录
- 计算字符串最后一个单词的长度,单词以空格隔开。
- 处理文件touch、mkdir、cp、mv、rm
- 一些数学小思维Tips长期更新积累
- java内存简析
- ural 1008. Image Encoding bfs
- Javascript备忘复习笔记2
- angularjs ui-route
- 【剑指offer】九,链表中倒数第k个结点
- HDU 4183 Pahom on Water (拆点最大流)
- JS、JQuery和ExtJs的跨域处理
- Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
- IE浏览器显示字体不好的解决