为了保护状态的一致性,要在单一的原子操作中更新互相关联的状态变量。
原子性:一组语句作为单独的,不可分割的单元进行。
内部锁
java提供了强制原子性的内置锁机制: synchronized块。
一个synchronized块有两部分:锁对象的引用,以及这个锁保护的代码块。
每个java对象都可以隐式地扮演一个用于同步的锁的角色;这些内置的锁被称为内部锁(intrinsic locks)或监视器锁(monitor locks).
获得内部锁的唯一途径是:进入这个内部锁保护的同步块或方法。
重进入方便了锁行为的封装,因此简化了面向对象并发代码的开发。
读-改-写(read-modify-write)
检查再运行(check-then-act)
缺少即加入(put-if-absetn)