关于Lock锁

Synchronized锁的缺陷Synchronized不会手动释放锁资源,当线程发生阻塞后,其他线程只能眼睁睁的等着,不会分别是读线程和写线程,读问题并不会引发高并发,但是synchronized锁不能识别是读线程还是锁线程 ,遇到了都会锁上。另外没有中断锁的功能,一个线路等待时间过长不会自我中断线程。Lock锁一、概述1.Lock是JDK1.5中提供的一套用于取代synchronized的机制2.相对synchronized而言,Lock更加灵活和精细 - synchronized在使用的时候
摘要由CSDN通过智能技术生成

Synchronized锁的缺陷
Synchronized不会手动释放锁资源,当线程发生阻塞后,其他线程只能眼睁睁的等着,不会分别是读线程和写线程,读问题并不会引发高并发,但是synchronized锁不能识别是读线程还是锁线程 ,遇到了都会锁上。另外没有中断锁的功能,一个线路等待时间过长不会自我中断线程。

Lock锁
一、概述
1.Lock是JDK1.5中提供的一套用于取代synchronized的机制
2.相对synchronized而言,Lock更加灵活和精细 - synchronized在使用的时候需要确定锁对象,如果确定错误或者锁形成嵌套,容易出现死锁;Lock由程序员自己创建,在使用的时候无需找锁对象而是直接调用方法加锁解锁即可

1.ReentrantLock - 重入锁:允许锁资源被同一个线程多次占用,也允许这个锁资源被不同的线程占用
2.锁的公平和非公平策略:
1.在资源有限的情况下,线程之间实际抢占执行到的次数不一定均等,这种现象称之为非公平策略
2.公平策略在使用的时候需要定义队列,而线程并不是直接抢占资源而是抢占入队顺序,这种情况下每一个线程的执行次数是大致相等

3.相对非公平策略而言,公平策略需要耗费更多的内存,需要涉及到线程调度,所以公平策略的效率相对较低
4.Lock和synchronized默认是非公平策略

 ·公平锁: ReentrantLock pairLock =new eentrantLock(true)
      --相当于,线程需要进入队列中等待,调用使用完后又进入队咧最后,重新等待。先进先出。 

·非公平锁: Reentrant

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值