Java——》Synchronized和Lock区别

推荐链接:

总结------》【Java】

总结------》【Mysql】

总结------》【Redis】

总结------》【Kafka】

总结------》【Spring】

总结------》【SpringBoot】

总结------》【MyBatis、MyBatis-Plus】

总结------》【Linux】

总结------》【MongoDB】

总结------》【Elasticsearch】

Java------》Synchronized和Lock区别

相同:

都是加锁方式同步

都是阻塞式的同步

不同 Synchronized Lock
锁的类型 Synchronized是Java中的关键字,只能用于同步代码块或方法 Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。
使用方式 Synchronized是隐式锁,它的获取和释放由JVM自动管理,无需手动控制 Lock是显式锁,需要手动调用lock()方法获取锁,并在合适的地方调用unlock()方法释放锁
实现方式 基于ObjectMonitor实现 基于AQS实现
可中断性 不可中断(如果线程无法获取到锁,Synchronized会一直等待,直到获取到锁) 可以中断(在等待获取锁的过程中,可以中断线程的等待)
公平性 不保证线程获取锁的公平性(即无法保证等待时间最长的线程优先获取锁) 可以通过构造函数指定锁的公平性(即保证等待时间最长的线程会优先获取锁。)
条件变量 Synchronized没有直接提供类似于Condition的功能,需要借助于Object的wait()、notify()和notifyAll()方法来实现 Lock提供了Condition接口,可以通过该接口实现线程之间的等待/通知机制
相关推荐
怒放吧德德11 小时前
Spring Boot 实战:RSA+AES 接口全链路加解密(防篡改 / 防重放)
java·spring boot·后端
郑州光合科技余经理15 小时前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
weisian15115 小时前
JVM--20-面试题6:如何判断对象可以被垃圾回收?
jvm·可达性算法
大大水瓶16 小时前
Tomcat
java·tomcat
dustcell.16 小时前
haproxy七层代理
java·开发语言·前端
游离态指针16 小时前
以为发消息=下单成功?RabbitMQ从0到秒杀实战的完整踩坑笔记
java
蚊子码农16 小时前
每日一题--JVM线程分析与死锁排查
jvm
BD_Marathon16 小时前
工厂方法模式
android·java·工厂方法模式
玹外之音16 小时前
Spring AI MCP 无状态服务器实战:构建AI智能用户管理系统
java·后端
java干货16 小时前
Redis 的 ZipList 是什么?它是怎么解决内存碎片问题的?
java