Synchronized和volatile、Lock有什么区别

本文对比了Java中的Synchronized和Volatile关键字,强调了它们在数据可见性和线程同步上的差异;同时,还探讨了Synchronized与Lock在语法、功能和性能上的区别,指出Lock提供了更灵活且在竞争激烈时可能有更好性能的特性。
摘要由CSDN通过智能技术生成

Synchronized和Volatile的区别

其实二者是互补的,不是对立的存在!   

1.volatile关键字是线程同步到轻量级实现,所以volatile性能比synchronized要好,但是volatile只能修饰变量,synchronized可以修饰方法以及代码块  

2.volatile可以保证数据的可见性,不能保证原子性,但是synchronized都可以。

3.Volatile主要是解决变量在多个线程之间的可见性,而synchronized是解决多个线程之间的同步性。

Synchronized和Lock的区别

第一语法层面:synchronized是c++语言实现,退出同步代码块会自动释放锁,Lock是接口,需要手动unlock来释放锁。

第二功能层面:都是悲观锁,但是Lock提供了许多synchronized不具备的功能,中断,超时,公平锁。

第三性能层面:没有竞争时,synchronized做了很多优化,偏向锁、轻量锁性能不赖,竞争激烈时,Lock会有更好的性能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值