区别:
synchronized:
1.内置关键字
2.无法判断是否获取锁的状态
3.会自动释放锁
4.锁可重入、不可中断、非公平
5.适合代码少量的同步问题
lock:
1.在JVM层面,lock是个Java类
2.可以判断是否获取到锁
3.需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁
4.锁可重入、可判断、可公平(两者皆可)
5.锁适合大量同步的代码的同步问题
区别:
synchronized:
1.内置关键字
2.无法判断是否获取锁的状态
3.会自动释放锁
4.锁可重入、不可中断、非公平
5.适合代码少量的同步问题
lock:
1.在JVM层面,lock是个Java类
2.可以判断是否获取到锁
3.需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁
4.锁可重入、可判断、可公平(两者皆可)
5.锁适合大量同步的代码的同步问题