Synchronized和lock都是锁能保证代码线程安全,但有些区别,区别如下:
1.原始构成
Synchronized是关键字是JVM层面的,而Lock是具体类,是api层面
2.使用方法
Synchronized不需要用户手动释放锁,当使用完后自动释放。而ReetrantLock需要手动释放锁
3.等待是否可以中断
Synchronized不可以中断,而ReetrantLock可以中断
4.加锁是否公平
Sychronized是非公平锁,而ReetrantLock可以设置(默认为非公平锁)
5.锁判定多个条件
Sychronized不可以判断,而ReetrantLock可以判断条件,指定唤醒线程。