这篇文章主要介绍了java并发JUC工具包AtomicInteger原子整型语法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。AtomicInteger 类底层存储一个int值,并提供方法对该int值进行原子操作。AtomicInteger 作为java.util.concurrent.atomic
包的一部分,从Java 1.5开始引入。通过下文的AtomicInteger
构造方法,可以创建一个AtomicInteger
对象,该对象的初始值默认为0。AtomicInteger
提供get和set方法,获取底层int整数值,与设置int整数值但是上面的方法,对于AtomicInteger
而言并不是它的核心内容,AtomicInteger
核心内容体现在它的原子性,我们下文介绍。我们通常在以下的两种场景下使用AtomicInteger
多线程并发场景下操作一个计数器,需要保证计数器操作的原子性。进行数值比较,如果给定值与当前值相等,进行数值的更新操作,并实现操作的非阻塞算法。把AtomicInteger
作为一个计数器使用,AtomicInteger
提供了若干方法进行加法、减法的原子操作。比如从一个map里面获取值,用get()方法,这是第一个操作;获取到值之后给这个值加上n,这是第二个操作;将进行过加法运算的值,再次放入map里面是第三个操作。所谓操作的原子性是指:在多线程并发的场景下,上面的三个操作是原子性的,也就是不可分割的。不会出现A线程get了数值,B线程同时也get到了该数值,两个线程同时为该值做运算并先后再次放入的情况,这种情况对于AtomicInteger
而言是不会出现的,AtomicInteger
操作是线程安全的、不可分割的。addAndGet()
– 将给定的值加到当前值上,并在加法后返回新值,并保证操作的原子性。getAndAdd()
– 将给定的值加到当前值上,并返回旧值,并保证操作的原子性。incrementAndGet()
– 将当前值增加1,并在增加后返回新值。它相当于++i
操作,并保证操作的原子性。getAndIncrement()
– 将当前免费云主机域名值增加1并返回旧值。相当于++i
操作,并保证操作的原子性。decrementAndGet()
– 将当前值减去1,并在减去后返回新值,相当于i--
操作,并保证操作的原子性。getAndDecrement()
– 将当前值减去1,并返回旧值。它相当于 --i
操作,并保证操作的原子性。下面是AtomicInteger原子性操作方法的例子compareAndSet操作将一个内存位置的内容与一个给定的值进行比较,只有当它们相同时,才会将该内存位置的内容修改为一个给定的新值。这个过程是以单个原子操作的方式完成的。compareAndSet方法:如果当前值==预期值,则将值设置为给定的更新值。expect
是预期值update
是更新值AtomicInteger compareAndSet() 方法的例子AtomicInteger
可以帮助我们在不使用synchronized同步锁的情况下,实现在多线程场景下int数值操作的线程安全,操作的原子性。并且使用AtomicInteger
来实现int数值的原子操作,远比使用synchronized同步锁效率更高。java.util.concurrent.atomic
包不仅为我们提供了AtomicInteger
,还提供了AtomicBoolean布尔原子操作类、AtomicLong长整型布尔原子操作类、AtomicReference对象原子操作类、AtomicIntegerArray整型数组原子操作类、AtomicLongArray长整型数组原子操作类、AtomicReferenceArray对象数组原子操作类。感谢你能够认真阅读完这篇文章,希望小编分享的“java并发JUC工具包AtomicInteger原子整型语法的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持百云主机,关注百云主机行业资讯频道,更多相关知识等着你来学习!
这篇文章主要讲解了“JVM性能调优监控工具如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM性能调优监控工具如何使用”吧! 现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题: …
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。