摘要:
原文地址在是http://www.ibm.com/developerworks/cn/java/j-jtp06197.html,不过原文写得比较长,我这里进行了一些概括,对于一般程序员我想中需大致了解即可,毕竟在大多数WEB开发中用到Volatile机率不大,概括总结如下:锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见 阅读全文
摘要:
(1)在一些线程安全的类中,如CopyOnWriteArrayList类的lock属性是一个Transient类型的变量,是不会进行Serialization的,所以在进行deserialization时,就需要用到Unsafe类进行Lock对象的重新设置,代码一般如下: // Support for resetting lock while deserializing private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long lockOffset; static { ... 阅读全文