1.synchronized可以给类.方法.代码块加锁;而lock只能给代码块加锁。
2.synchronized不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁;
而lock需要自己加锁和释放锁,如果使用不当没有unLock()去释放锁就会造成死锁。
3.通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
1.synchronized可以给类.方法.代码块加锁;而lock只能给代码块加锁。
2.synchronized不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁;
而lock需要自己加锁和释放锁,如果使用不当没有unLock()去释放锁就会造成死锁。
3.通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。