原子操作(atomic operation )是指“不能中断的一个或一系列的操作”。 处理器基于高速缓存或总线锁定实现多处理器之间的原子操作。 在Java中,可以通过锁定CAS使其循环来实现原子操作。 CAS操作——比较集,或者比较交换,现在大多数CPU指令都支持CAS的原子操作。
原子操作是指不受其他操作影响的操作任务单元。 原子操作是在多线程环境中避免数据不匹配的必要手段。 因为int不是原子操作,所以如果一个线程读取该值并将它加1,另一个线程可能会读取上一个值,从而导致错误。
为了解决这个问题,必须保证增加操作是原子性的。 在JDK1.5之前,可以使用同步技术进行这个。 在JDK1.5中,java.util.concurrent.atomic包含int和long类型的原子包装类,自动保证操作为原子,不需要使用同步。
java.util.concurrent包含一组原子。 基本特性是,在多线程环境中,多个线程同时执行这些类的实例中包含的方法时具有排他性。 也就是说,当一个线程访问该方法并执行其中的指令时,不会被其他线程中断,而另一个线程则像旋转锁定一样,JVM从队列中选择并访问另一个线程直到该方法执行完成
原子类:原子布尔、原子集成器、原子长、原子参考
原子排列:原子阵列、原子阵列、原子阵列
原子属性更新器: AtomicLongFieldUpdater,AtomicIntegerFieldUpdater,AtomicReferenceFieldUpdater
解决ABA问题的原子类: Atomicmarkablereference (反映是否通过引入Boolean改变了中间),通过引入AtomicStampedReference ) int累计反映中间是否发生了变化
欢迎在评论区发表评论。 编辑马上回答疑问