适合初学者的Java开发基础教程之Java中的原子操作
零基础怎么学Java?下面就跟着千锋西安Java培训老师一起来看看适合初学者的Java开发基础教程之Java中的原子操作。
来到千锋学习Java已经有一段时间了,由当初的懵逼状态逐渐好转,也逐渐养成了写技术学习笔记的习惯,今天总结了一下Java中的原子操作。
1、Java中的原子操作是什么?
所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间切换到另一个线程。
2、Java中的原子操作介绍:
jdk1.5的包为Java.util.concurrent.atomic
这个包里面提供了一组原子类。其基本特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性。
即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择另一个线程进入,这只是一种逻辑上的理解。实际上是借助硬件的相关指令来实现的,但不会阻塞线程(synchronized 会把别的等待的线程挂,或者说只是在硬件级别上阻塞了)。
其中的类可以分成4组
- AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference
- AtomicIntegerArray,AtomicLongArray
- AtomicLongFieldUpdater,AtomicIntegerFieldUpdater,AtomicReferenceFieldUpdater
- AtomicMarkableReference,AtomicStampedReference,AtomicReferenceArray
Atomic类的作用
- 使得让对单一数据的操作,实现了原子化
- 使用Atomic类构建复杂的,无需阻塞的代码
- 访问对2个或2个以上的atomic变量(或者对单个atomic变量进行2次或2次以上的操作)通常认为是需要同步的,以达到让这些操作能被作为一个原子单元。
AtomicBoolean , AtomicInteger, AtomicLong, AtomicReference 这四种基本类型用来处理布尔,整数,长整数,对象四种数据。
- 构造函数(两个构造函数)
- 默认的构造函数:初始化的数据分别是false,0,0,null
- 带参构造函数:参数为初始化的数据
- set( )和get( )方法:可以原子地设定和获取atomic的数据。类似于volatile,保证数据会在主存中设置或读取
- getAndSet( )方法
- 原子的将变量设定为新数据,同时返回先前的旧数据
- 其本质是get( )操作,然后做set( )操作。尽管这2个操作都是atomic,但是他们合并在一起的时候,就不是atomic。在Java的源程序的级别上,如果不依赖synchronized的机制来完成这个工作,是不可能的。只有依靠native方法才可以。
- compareAndSet( ) 和weakCompareAndSet( )方法
- 这两个方法都是conditional modifier方法。这2个方法接受2个参数,一个是期望数据(expected),一个是新数据(new);如果atomic里面的数据和期望数据一致,则将新数据设定给atomic的数据,返回true,表明成功;否则就不设定,并返回false。
- 对于AtomicInteger、AtomicLong还提供了一些特别的方法。getAndIncrement( )、incrementAndGet( )、getAndDecrement( )、decrementAndGet ( )、addAndGet( )、getAndAdd( )以实现一些加法,减法原子操作。(注意 --i、++i不是原子操作,其中包含有3个操作步骤:第一步,读取i;第二步,加1或减1;第三步:写回内存)。
如果你对Java感兴趣,不妨来千锋西安校区看看!
相关推荐HOT
更多>>it学费大概是多少?怎么学习是最性价比的方式
我们如果要学习it,你会发现好像收费标准都不太一样。那么准确的it学费大概是多少呢?其实少则几百几千,多则2,3万都有。其实真的没有一个比较...详情>>
2023-02-28 16:01:43西安软件测试培训多少钱?花多少钱合适?
作为IT技术岗位,软件测试在市场上的缺口也是非常大的,而且这方面人才也是非常匮乏的,这也吸引了很多人们都想要从事这个行业,一旦从事这个...详情>>
2023-02-20 16:08:00西安前端开发培训需要多少钱?需要多长时间?
现在社会上web前端培训机构也是比较多的,而且这些培训机构也主要分为线上或者线下教学,由于教学模式不同,所以收费也是各不相同的。西安前端...详情>>
2023-02-20 15:51:00西安it培训班有哪些?考察的侧重点是什么
在西安it培训班的数量可以说是非常多的,为我们学习it,成为这方面人才也提供了一个非常不错的平台,尤其是对于一些非专业的学生来讲,通过系统...详情>>
2023-02-10 15:17:00热门推荐
真正的营销推广:利用社交媒体广告的有效性
沸前端工程师主要干啥?前端工程师提升空间大吗?
热女生学前端开发好吗?女生学前端容易吗?
热后端和前端的区别是什么?前端工作难吗?
新软件测试工资待遇大概多少?工作岗位学历要求高吗?
it学费大概是多少?怎么学习是最性价比的方式
it培训大概费用?怎么选择培训机构
西安软件测试培训多少钱?花多少钱合适?
西安前端开发培训需要多少钱?需要多长时间?
女生学前端开发难吗?适合女生选学吗?
西安哪家Java培训班好?参加Java培训的好处
西安Java培训一般多少钱?费用并不代表品质
西安Java培训班哪里好?值得一看
Java培训班靠谱吗?报培训班的好处