
Java并发编程
文章平均质量分 84
clj_风清云淡
这个作者很懒,什么都没留下…
展开
-
并行编程之Java内存模式
Java内存模式以前我在看一些并行编程的书时候,老是有些模糊,后来看到《深入理解Java虚拟机 第二版》这边书在并行哪章时候,才逐渐清晰,现在就来讲讲Java内存模式。 - 主存和工作内存 1. 主存 保存了有关对象class属性字段,全局变量等信息 2. 工作内存指线程相关存储信息。 一般来说,工作内存会得到主存中的一部分内存信息拷贝,当工作内存更新了某些变量值得时候必须要回写原创 2017-01-06 13:50:50 · 645 阅读 · 0 评论 -
并行编程之指令重排
什么是指令重排?为什么会指令重排? 为了使得处理器内部的运算单元能尽量被充分利用,处理器可 能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序 执行的结果重组,保证该结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算 的先后顺序与输入代码中的顺序一致,因此,如果存在一个计算任务依赖另外一个计算任务 的中间结果,原创 2017-02-10 12:07:47 · 1765 阅读 · 0 评论 -
并行编程之先行发生原则
先行发生原则(happens-before)在并发环境下访问变量,我们如何确定该情况下是否线程安全,数据是否存在竞争,根据并行发生原则。什么是先行发生原则? 指Java内存模式中定义两项操作之间的偏序关系,如果说操作A先行发生于操作B,其实就是说在操作B之前,操作A产生的影响能被操作B观察到,“影响”包括修改内存中的共享变量的值、发送了消息、调用了方法等。举个例子:i = 1;//thread原创 2017-01-16 17:45:15 · 1389 阅读 · 0 评论 -
并行编程之volatile变量
并行编程之volatile变量在并行编程中,volatile变量算是一个最轻量级的同步规则了。volatile具有以下两种特性保证变量的可见性 可见性是指当一个线程修改了共享变量的值,其它线程能够立即得知这个修改。Java内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式来实现可见性,无论是普通变量还是volatile变量都是如此,普通原创 2017-02-24 10:20:00 · 812 阅读 · 1 评论