Unsafe类 AtomicReference AtomicStampedReference AtomicIntegerArray AtomicIntegerFieldUpdater vector SynchronousQueue

Java中的指针:Unsafe类

无锁的对象引用:AtomicReference

带有时间戳的对象引用:AtomicStampedReference

数组也能无锁:AtomicIntegerArray

让普通的变量也享受CAS操作带来的线程安全性  AtomicIntegerFieldUpdater   


虽然AtomicIntegerFieldUpdater很好用,但是还是有几个注意事项:

第一,Updater只能修改它可见范围内的变量。因为Updater使用反射得到这个变量。如果变量不可见,就会出错。比如如果score申明为private,就是不可行的。

第二,为了确保变量被正确的读取,它必须是volatile类型的。如果我们原有代码中未申明这个类型,那么简单得申明一下就行,这不会引起什么问题。

第三,由于CAS操作会通过对象实例中的偏移量直接进行赋值,因此,它不支持static字段(Unsafe. objectFieldOffset()不支持静态变量)。

  

挑战无锁算法  无锁的vector实现

让线程之间互相帮助--SynchronousQueue的实现

原文地址:https://www.cnblogs.com/sg9527/p/8028182.html