陪你在路上
║ ║ ║-往事不要再提-----人生已多风雨-║ ║ ║

多线程操作会带来不一致性,为了实现一直性。我们可以用关键字:synchronized同步对象或者volatile轻量级、内存可见性。

两个关键字使用对比:

1、synchronized比较重,属于悲观锁机制,造成冲突大,线程间的上下文切换多,资源浪费。

比如我们就实现计数操作。

2、volatile轻量级内存可见性,非阻塞式,性能更高。

java已经实现了很多原子操作类:在java.util.concurrent包里

 AtomicBoolean:原子Boolean类型
 AtomicInteger:原子Integer类型
 AtomicLong:原子Long类型
 AtomicReference:原子引用类型

及相应的数组类型:

AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray

为了便于以原子方式更新对象中的字段,还有如下的类:
    AtomicIntegerFieldUpdater
    AtomicLongFieldUpdater
    AtomicReferenceFieldUpdater
AtomicReference还有两个类似的类,在某些情况下更为易用:

    AtomicMarkableReference
    AtomicStampedReference

实现原理就是用到volatile关键字声明变量。

posted on 2017-03-23 20:06  zhaoguo435  阅读(867)  评论(0编辑  收藏  举报