知识大全 JAVA高级:多核线程-volatile原理与技巧[1]
Posted 知
篇首语:人争气,火争焰,佛争一炷香。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA高级:多核线程-volatile原理与技巧[1]相关的知识,希望对你有一定的参考价值。
JAVA高级:多核线程-volatile原理与技巧[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
为什么使用volatile比同步代价更低?
同步的代价 主要由其覆蓋范围决定 如果可以降低同步的覆蓋范围 则可以大幅提升程序性能
而volatile的覆蓋范围仅仅变量级别的 因此它的同步代价很低
volatile原理是什么?
volatile的语义 其实是告诉处理器 不要将我放入工作内存 请直接在主存操作我 (工作内存详见java内存模型)
因此 当多核或多线程在访问该变量时 都将直接操作主存 这从本质上 做到了变量共享
volatile的有什么优势?
更大的程序吞吐量
更少的代码实现多线程
程序的伸缩性较好
比较好理解 无需太高的学习成本
volatile有什么劣势?
容易出问题
比较难设计
volatile运算存在脏数据问题
volatile仅仅能保证变量可见性 无法保证原子性
volatile的race condition示例
public class TestRaceCondition private volatile int i = ;public void increase() i++;public int getValue() return i;
多线程执行increase方法时 是否能保证它的值会是线性递增的呢?
答案是否定的
cha138/Article/program/Java/gj/201311/27717相关参考
知识大全 JAVA高级:多核线程-volatile原理与技巧[4]
JAVA高级:多核线程-volatile原理与技巧[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 JAVA高级:多核线程-volatile原理与技巧[3]
JAVA高级:多核线程-volatile原理与技巧[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
为什么使用volatile比同步代价更低? 同步的代价主要由其覆蓋范围决定如果可以降低同步的覆蓋范围则可以大幅提升程序性能 而volatile的覆蓋范围仅仅变量级别的因此它的同步代价很低 v
知识大全 Java 理论与实践: 正确使用 volatile 变量 线程同步
Java理论与实践:正确使用volatile变量线程同步 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
Java语言规范中指出为了获得最佳速度允许线程保存共享成员变量的私有拷贝而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比 Volatile修饰的成员变量在每次被线程访问时都强迫从
Java多线程之volatile深入分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! vola
以前一直没在意一直以为volatile修饰了就高枕无忧了但其实不然最简单的一个场景 publicclassCounter publicvolatilestaticintcount=; pub
Java线程的概念与原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一操作系统中线程和进程的
线程的创建和启动 java语言已经内置了多线程支持所有实现Runnable接口的类都可被启动一个新线程新线程会执行该实例的run()方法当run()方法执行完毕后线程就结束了一旦一个线程执行
实战Java多线程编程精要之高级支持 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 线程组 线