锁提供两种特性:
1.互斥(mutual exclusion): 多线程只有一个能操作
2.可见性(visibility):锁释放之前的修改对于随后获得该锁的另一个线程是可见的
volatile只具有可见性,不具有互斥性。