多线程中的锁

多线程中的锁

1、java中什么是显式锁?

1、java中显式锁就是实现lock接口的对象,比如这个对象ReentrantLock。
2、在代码中它在代码中更容易看到锁,只需要lock方法上锁,unlock方法解锁就行
3、它的底层依赖于特定的cpu,可以认为不受JVM的影响。
4、它是可以中断的锁
5、选择下一个线程是非抢占式的,按照线程的排队顺序

2、java中什么是隐式锁

1、有synchronized修饰的锁,同步代码块的方式或者同步方法的方式
2、它是非中断的锁,一旦运行不能被中断,只能等它运行结束
3、在线程发生异常的时候,会自动释放锁,不会发生异常死锁
4、底层依赖于软件层面上的jvm
5、选择下一个程序是抢占式的,下一个线程随机选择

3、显式锁和隐式锁的区别

显式锁隐式锁
能否中断不能
线程异常,能否自动释放锁不能
是否依赖jvm不是
加锁是否公平公平或者不公平不公平

4、选择哪个会更好呢?

选择lock更好一点:
	1、lock更符合我们的面对对象思想去操作锁
	2、lock运行效率比synchronize更高一些
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值