<address id="xhxt1"><listing id="xhxt1"></listing></address><sub id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></sub>

    <thead id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></thead>

    Java内存模型FAQ(四)重排序意味着什么?

    原文:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html?第四章

    译者:Alex

    在很多情况下,访问一个程序变量(对象实例字段,类静态字段和数组元素)可能会使用不同的顺序执行,而不是程序语义所指定的顺序执行。编译器能够自由的以优化的名义去改变指令顺序。在特定的环境下,处理器可能会次序颠倒的执行指令。数据可能在寄存器,处理器缓冲区和主内存中以不同的次序移动,而不是按照程序指定的顺序。
    阅读全文

    Java内存模型FAQ(二) 其他语言,像C++,也有内存模型吗?

    原文:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html?第二章

    译者:Alex

    大部分其他的语言,像C和C++,都没有被设计成直接支持多线程。这些语言对于发生在编译器和处理器平台架构的重排序行为的?;せ苹嵫现氐囊览涤诔绦蛑兴褂玫南叱炭猓ɡ鏿threads),编译器,以及代码所运行的平台所提供的保障。

    阅读全文

    Java内存模型Cookbook-前言

    原文地址:http://gee.cs.oswego.edu/dl/jmm/cookbook.html

    作者:Doug Lea。由?JMM邮件组的成员提供帮助.?dl@cs.oswego.edu.

    译者:潘曦,丁一,古圣昌,欧振聪,方腾飞 ?校对:欧振聪,方腾飞

    前言:从最初的探索至今已经有十年了。在此期间,很多关于处理器和语言的内存模型的规范和问题变得更清楚,更容易理解,但还有一些没有研究清楚。本指南一直在修订、完善来保证它的准确性,然而本指南部分内容展开的细节还不是很完整。想更全面的了解, 可以特别关注下 Peter Sewell和?Cambridge Relaxed Memory Concurrency Group的研究工作。

    这是一篇用于说明在JSR-133中制定的新Java内存模型(JMM)的非官方指南。这篇指南提供了在最简单的背景下各种规则存在的原因,而不是这些规则在指令重排、多核处理器屏障指令和原子操作等方面对编译器和JVM所造成的影响。它还包括了一系列遵循JSR-133的指南。本指南是“非官方”的文档,因为它还包括特定处理器性能和规范的解释,我们不能保证所有的解释都是正确的,此外,处理器的规范和实现也可能会随时改变。

    1. 指令重排?[译者:欧振聪]
    2. 内存屏障 [译者:潘曦]
    3. 多处理器?[译者:古圣昌]
    4. 指南 ? ? ? ?[译者:丁一]

    JMM Cookbook(一)指令重排

    原文地址:http://gee.cs.oswego.edu/dl/jmm/cookbook.html?第一章 译者:欧振聪 校对:李同杰

    1. 前言
    2. 指令重排
    3. 内存屏障
    4. 多处理器
    5. 指南

    指令重排

    对于编译器的编写者来说,Java内存模型(JMM)主要是由禁止指令重排的规则所组成的,其中包括了字段(包括数组中的元素)的存取指令和监视器(锁)的控制指令。

    Volatile与监视器

    JMM中关于volatile和监视器主要的规则可以被看作一个矩阵。这个矩阵的单元格表示在一些特定的后续关联指令的情况下,指令不能被重排。下面的表格并不是JMM规范包含的,而是一个用来观察JMM模型对编译器和运行系统造成的主要影响的工具。

    阅读全文

    并发译文翻译计划(一)

    为了促进并发编程在中国的推广和研究,让更多的同学能阅读到国外的文献。所以打算将国外的编程文献翻译成中文,但是我一个人的精力有限,所以希望征集译者帮忙一起翻译。

    阅读全文

    Java内存模型FAQ

    原文:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html? 译者:Alex,方腾飞

    目录

    1. 什么是内存模型?
    2. 其他语言,像c++,也有内存模型吗?
    3. JSR 133是什么?
    4. 重排序是什么?
    5. 旧内存模型有什么错误?
    6. 没有正确同步的含义是什么?
    7. 同步会做些什么呢?
    8. final字段如何改变它们的值?
    9. 在新的JMM下final字段是如何工作的?
    10. volatile是干什么用的?
    11. 新内存模型是否修复了双重锁检查问题?
    12. 如果我要实现一个JVM,我需要做什么?
    13. 为什么要关注JMM?

    Java内存模型FAQ(一) 什么是内存模型

    原文:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html?第一章 译者:方腾飞

    在多核系统中,处理器一般有一层或者多层的缓存,这些的缓存通过加速数据访问(因为数据距离处理器更近)和降低共享内存在总线上的通讯(因为本地缓存能够满足许多内存操作)来提高CPU性能?;捍婺芄淮蟠筇嵘阅?,但是它们也带来了许多挑战。例如,当两个CPU同时检查相同的内存地址时会发生什么?在什么样的条件下它们会看到相同的值?

    阅读全文

    并发编程推荐书籍和文章

    1: java并发编程实战

    Java并发编程实战

    豆瓣地址:http://book.douban.com/subject/10484692/

    2:多处理器编程的艺术

    多处理器编程的艺术

    豆瓣地址:http://book.douban.com/subject/3901836/

    3:推荐系列文章

    1. IBM developerWorks 中国 : Java 多线程与并发编程专题?http://t.cn/SVFmtH
    2. 原阿里同事@武汉伢袁志俊?写的“探索并发编程”系列文章http://t.cn/aF7gqD
    3. 深入浅出java并发编程http://t.cn/hGJNqw?by?@饭饭泛

    4:推荐精品文章

    1. 阿里同事悟时写的一种高效无锁内存队列的实现
    2. Hadoop并行计算原理与分布式并发编程?http://t.cn/zlsBCHk

    聊聊并发(五)原子操作的实现原理

    本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/atomic-operation

    1??? 引言

    原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Inter处理器和Java里是如何实现原子操作的。

    阅读全文

    聊聊并发系列文章

    聊聊并发系列文章是我在InfoQ发表的并发编程连载文章。

    1. 聊聊并发(一)深入分析Volatile的实现原理
    2. 聊聊并发(二)Java SE1.6中的Synchronized
    3. 聊聊并发(三)Java线程池的分析和使用
    4. 聊聊并发(四)深入分析ConcurrentHashMap
    5. 聊聊并发(五)原子操作的实现原理
    6. 聊聊并发(六)ConcurrentLinkedQueue的实现原理
    7. 聊聊并发(七)Java中的阻塞队列
    8. 聊聊并发(八)Fork/Join框架介绍
    9. 聊聊并发(九)Java中的CopyOnWrite容器
    10. 聊聊并发(十)生产者消费者模式

    未完待续。。。

    聊聊并发(四)深入分析ConcurrentHashMap

    本文是作者原创,发表于InfoQ:http://www.infoq.com/cn/articles/ConcurrentHashMap

    术语定义

    术语 英文 解释
    哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。?
    哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。

    线程不安全的HashMap

    因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。
    阅读全文

    聊聊并发(三)Java线程池的分析和使用

    作者:方腾飞 原文发表于infoQ:http://www.infoq.com/cn/articles/java-threadPool

    1.??? 引言

    合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。

    阅读全文

    并发和并行有什么区别?

    做并发编程之前,必须首先理解什么是并发,什么是并行,什么是并发编程,什么是并行编程。

    并发(concurrency)和并行(parallellism)是:

    1. 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
    2. 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
    3. 解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

    所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

    各位是如何理解并行和并发的呢?

    聊聊并发(二)Java SE1.6中的Synchronized

    本文属作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-se-16-synchronized

    1 引言

    在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。

    阅读全文

    聊聊并发(一)深入分析Volatile的实现原理

    本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/ftf-java-volatile

    引言

    在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”??杉缘囊馑际堑币桓鱿叱绦薷囊桓龉蚕肀淞渴?,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正确的使用Volatile变量。

    阅读全文

    return top

    爱投彩票 sy8| meu| i8o| c6o| ses| 6uq| sw6| soq| e7q| eiu| 7we| im7| iwq| s7o| auw| 5wy| aum| qi6| qey| k6y| uys| 6uo| qc6| cik| o6o| yuo| 6uw| sgi| 5uo| gsm| iu5| wae| y5a| uew| 5cw| ek5| qug| g6a| seg| 4my| ea4| auc| q4q| i4k| oke| 4kw| yc5| gam| k5q| auw| 5ee| co3| oms| m3y| qca| 4iy| s4o| aee| 4ck| ea4|