Java并发编程基础,原子操作类

   今天偶尔看到一篇文章https://www.cnblogs.com/crazymakercircle/p/10089113.html《第101次提醒:++ 不是线程安全的》(本人不是班科出身,因此各方面基础不行,努力学习中。)里面到一个关于并发编程的基础问题 ++ 是否安全。

    看完文章发现i++在并发操作下不是线程安全的,并在文章下面写出了一个安全的实例。安全的实例中提到了一个 原子操作类。一般对于线程安全问题都会选择 synchronized 同步关键字去解决,但是这里提出了原子操作类。随后我去找度娘去了解原子操作类。https://www.cnblogs.com/boothsun/p/8010692.html   这篇文章中介绍了关于原子操作类的一些信息。

  知道原子操作类后,想去了解为什么这个原子操作类可以是线程安全的? 在csdn 中找到一片文章  https://blog.csdn.net/reggergdsg/article/details/51835184 该文章以AtomicInteger为例子。

  在写总结时突然想到++自增不是线程安全的,那么--呢?是不是一样?然后发现自己钻牛角尖了。。。

  总结:

     ++ 自增并不是线程安全的。

    使用synchronized和原子操作类都可以避免线程不安全的问题,从而解决并发编程的问题。(性能方面我进行过测试,发现原子操作类的性能优于同步关键词)

    原子操作类有四种更新基本类:更新基本类型(布尔,整形,Long),

                  更新数组(整形,长整形,引用类型),

                  更新引用类型(引用类型,引用类型的字段,带有标记位的引用类型),

                  更新字段类(整型的字段的更新器,长整型的字段的更新器,带有版本号的引用类型)。

         PS:如果有错误欢迎指教!欢迎各位大佬指点!

posted on 2018-12-10 16:37  墨绿。  阅读(67)  评论(0)    收藏  举报