synchronized 和 ReentrantLock
1、synchronized 用于方法或代码块,加上它后可以确保该对象的该方法是串行的,不可并行执行。即:该方法加上了锁。这种锁方式比较简单,只需在方法或代码块前声明即可,无需显式的解锁。
2、ReentrantLock是接口Lock的实现类,它提供了tryLock、unLock等方法,可用于显式对代码块加锁。
注意,这种方式加锁后,需要通过unLock方法显式的释放锁。一般会用try..catch..finally模式,在finally块中完成对锁的释放。