`
lmdxr
  • 浏览: 42248 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

AtomicInteger原理

 
阅读更多

AtomicInteger 通俗地解释: 对某个内存值拷贝一个副本,某个线程若读到该副本,并对其进行计算,输出结果,在写入内存时,再次取出内存值和该副本比较,若副本和内存值相同,则把新的值写入内存。 较为官方的解释: 通过CAS(AtomicInteger)实现,CAS简而言之就是。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 两个问题: (1)CAS算法仍然可能会出现冲突,例如A、B两个线程,A已经进入写内存但未完成,此时A读取到的副本且读取成功,AB两个线程同时进入写内存操作,必然会造成冲突。 CAS算法本质并非完全无锁,而是把获得锁和释放锁推迟至CPU原语实现,相当于尽可能的缩小了锁的范围;直接互斥地实现系统状态的改变,它的使用基本思想是copy-on-write——在修改完对象的副本之后再用CAS操作将副本替换为正本。 (2)ABA问题,若其中一个线程修改A->B->A,另外一个线程仍然读取到A,虽然值是预期值,但并不能说明该内存值没有变化。

分享到:
评论

相关推荐

    AtomicInteger的使用,CAS的工作原理

    AtomicInteger atomicInteger = new AtomicInteger(5); atomicInteger.compareAndSet(5, 2020) + \t current data is + atomicInteger.get()) /** * Atomically sets the value to the given updated value * if ...

    AtomicInteger 浅谈

    本文将深入浅出地探讨AtomicInteger的工作原理、常见用法以及其在实际应用中的价值。 AtomicInteger的核心在于它实现了无锁(lock-free)和自旋(spin-wait)的并发策略,利用CPU的底层指令来实现高效且线程安全的...

    java面试常见基础(深层次,高级研发)

    ##### 13.3 由CAS分析AtomicInteger原理 `AtomicInteger`利用CAS实现原子更新整数值。 ##### 13.4 CAS的缺点 - 只能保证简单操作的原子性。 - 循环时间长开销大。 #### 14. Map数据结构? Map接口是存储键值对...

    Java中的原子操作:深入探索AtomicInteger的实现与应用

    本文将详细介绍 AtomicInteger 的工作原理、使用方法以及如何在实际项目中应用它。 AtomicInteger 是Java并发编程中实现原子操作的重要工具。它通过 Unsafe 类提供的硬件级别的原子操作和 volatile 关键字保证了操作...

    Java AtomicInteger类的使用方法详解

    AtomicInteger类的实现原理是基于Unsafe类的compareAndSwapInt方法。它使用volatile关键字来确保多线程可以共享变量,但是这种方式会使得VM优化失去作用,导致效率较低。因此,在使用AtomicInteger类时需要谨慎使用...

    java多线程自增效率比较及原理解析

    ### Java多线程自增效率比较及原理解析 #### 一、引言 在Java多线程环境中,自增操作是一种非常常见的需求。然而,由于多线程环境中的并发执行特性,简单的自增操作可能会导致数据不一致等问题。因此,在进行自增...

    线程池顶层实现原理之线程模型,状态,执行流程,原理

    线程池的状态是通过 AtomicInteger ctl 变量来记录的,ctl 变量是一个 32 位的整数,高 3 位用于记录线程池的状态,低 29 位用于记录活动线程的数量。线程池的状态有五种:RUNNING、SHUTDOWN、STOP、TIDYING 和 ...

    Java并发编程包中atomic的实现原理示例详解

    AtomicInteger的实现原理是通过使用volatile关键字保证可见性,并使用CAS(Compare-And-Swap)乐观锁来保证原子性。CAS乐观锁的实现原理是通过自旋 + CAS来实现的。在这个过程中,通过compareAndSwapInt比较更新...

    Java CAS 原理分析

    ### Java CAS 原理分析 #### 一、概述 CAS(Compare and Swap)作为一种重要的同步机制,在多线程环境中发挥着关键作用。它能够帮助开发者实现无锁编程,提高程序运行效率。本文将深入剖析Java中CAS的基本原理及其...

    深入了解Java atomic原子类的使用方法和原理

    Java Atomic原子类的使用方法和原理 Java Atomic原子类是Java中的一种多线程安全机制,用于在多线程环境中保证变量的原子性操作。Atomic原子类的出现解决了多线程环境下变量操作的安全问题,使得开发者可以更方便地...

    多线程原理详解

    本篇将深入探讨多线程的原理及其在Java中的应用。 首先,我们需要理解什么是线程。线程是操作系统分配CPU时间的基本单位,每个线程都有自己的程序计数器、寄存器和栈空间,共享同一块内存区域。在Java中,线程有两...

    使用Java的Memory Model实现一个简单的计数器.txt

    #### 四、AtomicInteger的工作原理 `AtomicInteger`的核心是通过使用CAS(Compare and Swap)算法来实现原子性操作的。CAS是一种无锁编程技术,它可以在不使用锁的情况下完成多线程环境下的原子操作。CAS操作包含三...

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接4.zip

    │ 04 AtomicInteger的原子操作.mp4 │ 05 AtomicIntegerArray的原子操作.mp4 │ 06 AtomicReferenceArray的原子操作.mp4 │ 07 AtomicReference的原子操作.mp4 │ 08 使用AtomicStampedReference演示ABA问题.

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接3.zip

    │ 04 AtomicInteger的原子操作.mp4 │ 05 AtomicIntegerArray的原子操作.mp4 │ 06 AtomicReferenceArray的原子操作.mp4 │ 07 AtomicReference的原子操作.mp4 │ 08 使用AtomicStampedReference演示ABA问题.

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接1.zip

    │ 04 AtomicInteger的原子操作.mp4 │ 05 AtomicIntegerArray的原子操作.mp4 │ 06 AtomicReferenceArray的原子操作.mp4 │ 07 AtomicReference的原子操作.mp4 │ 08 使用AtomicStampedReference演示ABA问题.

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接2.zip

    │ 04 AtomicInteger的原子操作.mp4 │ 05 AtomicIntegerArray的原子操作.mp4 │ 06 AtomicReferenceArray的原子操作.mp4 │ 07 AtomicReference的原子操作.mp4 │ 08 使用AtomicStampedReference演示ABA问题.

    JUC最详细思维导图,一次了解读写锁,可重入锁,Cas原理,volatile 关键字原理

    本文将深入探讨其中的关键概念,包括读写锁、可重入锁、CAS原理以及volatile关键字。 首先,我们来看读写锁。读写锁允许多个线程同时进行读操作,但在写操作时,只有一个线程能够获得锁。这种设计极大地提高了并发...

Global site tag (gtag.js) - Google Analytics