美文网首页
java的原子操作和原子操作的好处

java的原子操作和原子操作的好处

作者: 每天学点编程 | 来源:发表于2018-02-19 22:42 被阅读23次

请关注我的微信公众号

个人微信公众号

技术交流群 (仅作技术交流):642646237

​请关注我的头条号:

原子操作的例子


AtomicIntegerincrementAndGet()方法等价于++count,并是原子操作;
AtomicIntegergetAndIncrement()方法等价于count++,并是原子操作。

原子操作的好处

首先,不会忘了在正确的时候获取锁。

其次,由于没有锁的参与,对原子变量的操作不会引发死锁。

最后,原子变量是无锁(lock-free)非阻塞(non-blocking)算法的基础,这种算法可以不用锁和阻塞来达到同步的目的。无锁的代码比起有锁的代码更为复杂。java.util.concurrent包中的类都尽量使用了无锁的代码,使用户在一定程度上免于亲自实现。

volatile变量

将Java变量标记成volatile,可以保证变量的读写不被乱序执行。

volatile是一种低级形式的同步。将变量标记成volatile并不能保证变量的++操作是原子的。

不建议使用volatile变量

随着JVM被不断优化,其提供了一些低开销的锁,volatile变量的适用场景也越来越少。
应当在java.util.concurrent.atomic包中寻找更合适的工具。

相关文章

网友评论

      本文标题:java的原子操作和原子操作的好处

      本文链接:https://www.haomeiwen.com/subject/ylewtftx.html