`

转:CAS深入认知

阅读更多

转载地址:http://www.jdon.com/46072

一般认为原子类型(java.util.concurrent.atomic类)能充分发挥代码的快速和高并发特点,大部分时间atomic确实发挥了更大作用,不过也有一些场景其实隐藏了非管理竞争的消耗,以至于成为一个严重的性能问题。

首先让我们来看看Atomic是如何实现的?所有的原子类型如AtomicLong, AtomicBoolean , AtomicReference等,基本上都是包装的volatile挥发性的值,这个新增的值来自于内部为这些类型提供CAS功能的sun.misc.Unsafe。
CAS(compare-and-swap)比较并交换)本质上是现代硬件上的实现,允许无堵塞 多线程数据处理能以一种安全有效方式实现,CAS发挥的巨大优势是:CAS不会招致内核级别的任何开销,编译器发出CPU指令,如lock cmpxchg, lock xadd, lock addq,这可以像你从JVM中调用指令一样快,CAS提供了比锁更好的一种替代。
但是使用在某些场合CAS会导致开销增大,可以见Dave Dice等人的研究成果,Java程序员应该好好读一下这个报告,避免了很多关于CAS的误解。
下面是一个实现back-off竞争管理的代码,非常简单,替代了之前失败的CAS,取而代之的是先退避一点时间,然后让其他线程来修改:
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.LockSupport;
public class BackOffAtomicLong {
    public static long bk;
    private final AtomicLong value = new AtomicLong(0L);
    public long get() {
        return value.get();
    }
    public long incrementAndGet() {
        for (;;) {
            long current = get();
            long next = current + 1;
            if (compareAndSet(current, next))
                return next;
        }
    }
    public boolean compareAndSet(final long current, final long next) {
        if (value.compareAndSet(current, next)) {
            return true;
        } else {
            LockSupport.parkNanos(1L);
            return false;
        }
    }
    public void set(final long l) {
        value.set(l);
    }
}
测试结果如下,测试条件是: 64-bit Linux 3.5.0 (x86_64) with Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz (8 logical cores) using 64-bit Hotspot Java 1.7.0_25-b15.
在多个读,一个写的场景下,back-off和CAS没有什么区别,但是在一个读多个写以及多个读多个写的情况却不同,
 BackOffAtomicLong 比Atomic有很大的性能提升 

分享到:
评论

相关推荐

    大数据-算法-小学生数学学习困难的认知加工机制.pdf

    首先,研究一使用了汉化版的DN:CAS认知评估系统,这是基于PASS理论的标准化工具,来研究PASS认知过程与小学生数学学习之间的关系。结果表明,PASS的各个过程与数学成绩高度相关,不同的数学领域与不同的认知过程关联...

    农林牧渔行业第2周周报:转基因商业化进度加快.zip

    标题“农林牧渔行业第2周周报:转基因商业化进度加快”表明这是一份关于农业、林业、畜牧业和渔业行业的周度报告,特别关注的是转基因技术在这些领域的商业化进程。转基因技术是指通过现代生物技术手段,将特定基因...

    元认知策略在高中政治教学的实际应用.doc

    教师应关注学生的情绪变化,提供情绪管理技巧,帮助他们建立积极的学习心态,避免认知注意综合症(CAS)的发生。 6. 提问能力的培养 提问是元认知体验的重要体现,能促进知识的内化和深化。教师应鼓励学生积极提问...

    Java并发编程:设计原则与模式(第二版).rar

    《Java并发编程:设计原则与模式(第二版)》是一本深入探讨Java平台上的多线程和并发编程的著作。本书旨在帮助开发者理解和掌握在Java环境中进行高效并发处理的关键技术与设计模式。以下是对该书内容的一些核心知识...

    我国远程医疗实施的影响因素分析——基于CAS理论.pdf

    4. **用户接受度**:公众对于新技术的认知程度和接受能力也会影响到远程医疗服务的应用普及。通过教育宣传等方式提高民众对远程医疗的认识,可以有效提升其使用意愿。 5. **商业模式探索**:远程医疗服务的商业...

    送你一束转基因花.ppt

    1. **转基因技术基础**:转基因技术,也称为基因工程,是通过现代生物技术将一个或多个外源基因插入到目标生物的基因组中,以改变其遗传特性。在花卉领域,这项技术被用来增强花卉的颜色、形状、香气,甚至抗病性和...

    大数据-算法-基于PASS理论的小学数学学习困难儿童应用题问题表.pdf

    研究二进一步深入,利用汉化版的DN:CAS认知评估系统,研究了数学困难学生应用题列式成绩、表征水平与PASS各认知过程的关系。研究发现,PASS各认知过程对数学困难学生和正常学习者都有明显的鉴别力和预测力,尤其是...

    转基因农作物PPT模板.pptx

    6. **公众认知与争议**:转基因技术在全球范围内引发了激烈的讨论,支持者认为它是解决饥饿和改善食品质量的有效途径,反对者则担忧其可能带来的未知风险和对传统农业的冲击。 7. **未来发展趋势**:随着科技的进步...

    送你一束转基因花 (2).ppt

    《送你一束转基因花》的主题深入探讨了转基因技术在花卉领域的应用和其带来的变革。在当今科技日新月异的时代,转基因技术已不再仅限于食品和医药领域,它同样改变了花卉产业,为人们的生活增添了更多色彩。 首先,...

    The.Genomics.Age.How.DNA.Technology.Is.

    5. **基因编辑技术**:如CRISPR-Cas9等工具能够精确地修改DNA序列,这对于治疗遗传性疾病具有革命性的意义。 #### 三、历史背景 1. **DNA双螺旋结构的发现**:1953年,沃森和克里克的这一发现开启了分子生物学的新...

    内蒙古巴彦淖尔市临河区第三中学2020学年高三语文上学期第一次月考试题(无答案).doc

    然而,根据提供的【部分内容】,我们可以深入探讨一个与教育无关但极具科学价值的话题——基因编辑技术。基因编辑技术,尤其是CRISPR/Cas9系统,是现代生物学领域的一项突破性创新。它允许科学家们精准地定位并修改...

    Google计算思维1-1课程介绍

    国际教育技术协会(ISTE)、计算机科学教师协会(CSTA)以及英国计算在学校工作组(CAS)等组织与教育界及产业界代表合作,共同开发了一系列面向教育者的计算思维教学资源。 #### 五、计算思维课程目标 1. **了解...

    高手进阶,终极内存技术指南——完整.pdf

    例如,CL参数(CAS Latency,列地址选通脉冲延迟时间)的介绍文章大量出现,使得DIYer开始注意内存的时序参数。随后,VIA芯片组4路交错内存控制技术和内存容量限制的研究开启了内存技术的一个新篇章。这些技术进步...

    月球矩阵是什么意思.pdf

    现实中的基因编辑技术,如CRISPR-Cas9,虽然能够修改基因,但尚未涉及到与外部频率的互动。 总的来说,月球矩阵是一个融合了科幻、哲学、神秘学和信息技术的复合概念,它提出了一种对现实世界的另类解读,挑战了...

    生命结构.docx

    人类对生命的认知,从最初的直观感知,如观察动植物的行为和外貌,到后来通过工具和技术深入了解生命内部结构,如解剖学的发展,都离不开对生命结构的探索。随着科学技术的进步,如显微镜技术的出现和基因研究的深入...

    Game Theory in Wireless and Communication Networks

    Tamer Başar 是伊利诺伊大学厄巴纳-香槟分校电气和计算机工程系的Swanlund教席和CAS教授,同时是美国国家工程院院士、IEEE和IFAC的会士。Are Hjørungnes则被列为斯堪的纳维亚的教授。 在深入学习本书之后,读者...

    SDRAM-高手进阶,终极内存技术指南——完整进阶版

    总的来说,这篇《SDRAM-高手进阶,终极内存技术指南——完整进阶版》是为那些渴望深入了解内存技术的用户量身定制的,它将帮助读者纠正错误认知,提升对内存系统运作的理解,是内存技术探索者的宝贵资源。

    终极内存技术指南.pdf

    直到1998年440BX主板引入PC66/100内存标准,内存的时序参数如CL(CAS Latency)开始受到重视。随着VIA芯片组4路交错内存控制的出现,内存技术的研究逐渐深入,但也伴随着不少误导性的信息。作者指出,国内媒体在内存...

    基础研究和应用基础研究.doc

    基础研究,又称为纯基础研究,主要目标是对自然界的现象和规律进行深入探索,以增进人类对世界的理解和认知。这种研究通常不带有明确的应用目的,但它的成果可能在长远的未来对各个领域产生深远影响。例如,物理学中...

Global site tag (gtag.js) - Google Analytics