016 原子类

Posted 最爱五仁月饼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了016 原子类相关的知识,希望对你有一定的参考价值。

一 .概述

在我们之前的计数程序之中,我们知道只要保证count++是一个原子性的操作就能保证程序的线程安全性.

  当然这种常用的功能在jdk5中就出现了,这就是原子类.

原子类都是JUC包下atomic之中,类的数量比较多.


 

二 . 原子类的介绍

  原子类的操作之中可以保证是线程安全的,当我们的应用之中使用这些变量的时候,我们就需要为这些原子性进行考虑了.

  下面介绍一下常用的原子类的使用:

    @Test
    public void test() {
        AtomicInteger value = new AtomicInteger(10);
        System.out.println(value.get());
        value.set(11);
        System.out.println(value.get());
    }

AtomicInteger,我们使用get()和set()分别取值和设置,这些都很简单.

  我们希望实现count++这样的操作: 

@Test
    public void test2() {
        AtomicInteger value = new AtomicInteger(10);
        System.out.println(value.incrementAndGet());
    }

  我们轻松的就实现了自增这样的操作,另外我们可以保证这个自增操作是原子性的.


 

三 .总结

  我们使用原子类非常的简单,因为它可以保证我们对其操作是原子性的.

  当我们需要同步一个这样的变量的时候,我们就可以考虑使用这样的变量来完成操作.

    但是这些都不是最重要的,最重要的是CAS.这个在下面进行说明.

以上是关于016 原子类的主要内容,如果未能解决你的问题,请参考以下文章

原子片段:原子编辑器中的多行片段

Python_016(面向对象之属性和类方法)

016_多线程

Python学习笔记016——面向对象

016-Python提高02-多态属性MROContext

Java千百问_03基础语法(016)_main方法是什么