zoukankan      html  css  js  c++  java
  • java的原子性操作有哪些

    Java中的原子操作包括:
    1)除long和double之外的基本类型的赋值操作
    2)所有引用reference的赋值操作
    3)java.concurrent.Atomic.* 包中所有类的一切操作
    count++不是原子操作,是3个原子操作组合
    1.读取主存中的count值,赋值给一个局部成员变量tmp
    2.tmp+1
    3.将tmp赋值给count
    可能会出现线程1运行到第2步的时候,tmp值为1;这时CPU调度切换到线程2执行完毕,count值为1;切换到线程1,继续执行第3步,count被赋值为1------------结果就是两个线程执行完毕,count的值只加了1;
    还有一点要注意,如果使用AtomicInteger.set(AtomicInteger.get() + 1),会和上述情况一样有并发问题,要使用AtomicInteger.getAndIncrement()才可以避免并发问题

  • 相关阅读:
    poj 3744 题解
    hdu 1850 题解
    New World
    CSP2019游记
    LOJ6052 DIV
    CF809E Surprise me!
    Luogu4548 歌唱王国
    Luogu4581 想法
    Note 5.26-5.28
    LOJ6519 魔力环
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6249686.html
Copyright © 2011-2022 走看看