Java——》Synchronized和Lock区别

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Java——》Synchronized和Lock区别

相同:
都是加锁方式同步
都是阻塞式的同步

不同SynchronizedLock
锁的类型Synchronized是Java中的关键字,只能用于同步代码块或方法Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。
使用方式Synchronized是隐式锁,它的获取和释放由JVM自动管理,无需手动控制Lock是显式锁,需要手动调用lock()方法获取锁,并在合适的地方调用unlock()方法释放锁
实现方式基于ObjectMonitor实现基于AQS实现
可中断性不可中断(如果线程无法获取到锁,Synchronized会一直等待,直到获取到锁)可以中断(在等待获取锁的过程中,可以中断线程的等待)
公平性不保证线程获取锁的公平性(即无法保证等待时间最长的线程优先获取锁)可以通过构造函数指定锁的公平性(即保证等待时间最长的线程会优先获取锁。)
条件变量Synchronized没有直接提供类似于Condition的功能,需要借助于Object的wait()、notify()和notifyAll()方法来实现Lock提供了Condition接口,可以通过该接口实现线程之间的等待/通知机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值