转自:
http://www.java265.com/JavaMianJing/202204/16506887823048.html
下文笔者讲述synchronized和Lock的区别,如下所示- synchronized和Lock的区别:
- 语义不同
- synchronized是java内置关键字
- Lock是java中的一个类
- 可操作性不同
- synchronized无法检测是否获取锁状态
- Lock可判断是否获取锁
- 操作方式不同
- synchronized自动释放锁
- Lock需程序员手动释放锁
- 等待锁的方式不同
- 用synchronized关键字的两个线程1和线程2
- 当前线程1获得锁,线程2线程等待
- 如果线程1阻塞,线程2则会一直等待下去
- 用Lock锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了;
- 锁的可操作性不同
- synchronized的锁可重入、不可中断、非公平
- Lock锁可重入、可判断、可公平(两者皆可)
- 应用场景不同
- synchronized适用锁少量代码
- Lock适用大量代码块的锁
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |