【Java】多线程——可重入锁特点

Reentrantlock——可重入锁

内建锁隐式支持重入锁,Synchronized通过获取自增,释放自减的方式实现重入

1.重入锁实现原理

重入锁的特点:

1)线程获取锁时,如果已经获取锁的线程是当期线程直接再次获取;

2)由于锁会被获取N次,因此锁只有被释放N次之后才算真正释放成功

2.公平锁与非公平锁

公平锁:锁的获取顺序一定满足时间上的绝对顺序,等待时间最长的线程一定最先获取到锁

 

Reentrantlock默认使用非公平锁

对比:公平锁保证每次获取锁均为同步队列的第一个节点,保证了请求资源时间上的绝对顺序,但是效率

较低,需要频繁的进行上下文切换。

非公平锁会降低性能开销,降低一定得上下文切换,但是可能导致其他线程永远无法获取到锁,造成线程“饥饿”现象。

通常来讲,没有特定公平性要求,尽量选择非公平锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值