Java5原子性操作类

1.java.util.concurrent包及子包的API帮助文档

  • 看concurrent包的帮助文档页面,对并发库中涉及的内容有一个总体上的介绍
    • concurrent有如下两个子包

Java5原子性操作类_第1张图片

2.java.util.concurrent.atomic包

A.AtomicInteger

  • atomic下面的一个类AtomicInteger

    • 大家有程序经常用对整数加,加完了再把它取出来,就有可能你加完了,你还没有取出来的时候,别人就去增加,由于增加完了在取出来了,就不是你期望的数据,用这个类就可以解决多线程操作整数的问题
  • 创建对象的方法,默认为0,指定就使用第二个构造方法

Java5原子性操作类_第2张图片

  • 加的方法,自动实现了线程同步的问题
  • 不过没有减几个,可以把加几个弄成负数即可

这里写图片描述

  • 减一个

这里写图片描述

  • 加一个

这里写图片描述

对整数操作,对其他线程的排斥,多个线程访问同一个整数,一定用要这个类

  • 但是有些时候不要多此一举,如下,没有多线程调用,别随便用

Java5原子性操作类_第3张图片

  • 当然还有其他的数据类型,不仅仅只有一个int类型的

Java5原子性操作类_第4张图片

B.AtomicIntegerFieldUpdater

有些只需要看名字就知道了,我们要注意一下这个类AtomicIntegerFieldUpdater

一个整数可以定义成一个基本变量,一个整数也可以放在一个数组当中,一个整数也同意可以放在一个类里面,我现在不是用操作类,而是操作类里面那个整数,或者对象里面的实例变量,AtomicIntegerFieldUpdater这个类就是对类中的那个整数字段操作的

  • 首先是new,哪个类的那个变量

这里写图片描述

  • 某个具体对象,那个变量操作,操作与反射相似

这里写图片描述

3.java.util.concurrent.lock

你可能感兴趣的:(JAVA,多线程)