读写锁ReadWriteLock支持锁降级: 获取写锁,获取读锁,释放写锁,释放读锁锁降级可解决单线程下写读不一致的场景,即写i=1,后读出来i=2。虽然没有什么大问题,但是不满足单线程下的as-if-serial语义,即按照程序编写的顺序,写i=1操作在前,读i的值在后锁保持了原子性和可见性