1. synchronized 是 Java 的一个内置特性关键字,而 Lock 是 Java 的一个接口类;
2. synchronized 在发生异常时会自动释放线程占用的锁,而 Lock 在发生异常时(不发生也一样)需要主动在 finally 中调用 unLock() 去释放锁;
3. Lock 可以让等待锁的线程响应中断,而 synchronized 无法响应中断,会一直等待下去;
4. Lock 可以知道有没有成功获取到锁,而 synchronized 无法办到;
5. Lock 可以提高多线程进行读操作的效率,而 synchronized 不可以;
6. 在性能上来说如果竞争资源不激烈则两者差距不大,如果竞争资源非常激烈(很多线程同时抢占)时 Lock 的性能远远好于 synchronized;
7. 不过要注意 Lock 只能中断阻塞中的线程,一旦获取到锁进入运行状态就无法中断;文章来源:https://www.toymoban.com/news/detail-711312.html
8. Lock 和 synchronized 都可以保证内存可见性。文章来源地址https://www.toymoban.com/news/detail-711312.html
到了这里,关于Synchronized与Lock的区别和优缺点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!