美文网首页
java锁的概念

java锁的概念

作者: John13 | 来源:发表于2018-08-28 18:31 被阅读0次

    参考文档
    探究分布式并发锁
    并发编程-锁的发展和主流分布式锁比较总结
    从构建分布式秒杀系统聊聊分布式锁
    探索并发编程(六)------Java多线程性能优化
    java线程(2)--同步和锁
    Java并发编程:Lock
    深入理解多线程(一)——Synchronized的实现原理
    深入理解多线程(五)—— Java虚拟机的锁优化技术
    Java锁Synchronized,对象锁和类锁举例 --值得理解

    说明:从资料上看到的锁分类,拿过来整理分享大家看,感谢原创!!

    一、锁概念

    1、自旋锁 :自旋,jvm默认是10次吧,有jvm自己控制。for去争取锁

    2、阻塞锁: 被阻塞的线程,不会争夺锁。

    3、可重入锁: 多次进入该锁的域

    4、读写锁:

    5、互斥锁: 锁本身就是互斥的

    6、悲观锁: 不相信,这里会是安全的,必须全部上锁

    7、乐观锁: 相信,这里是安全的。

    8、公平锁: 有优先级的锁

    9、非公平锁: 无优先级的锁

    10、偏向锁: 无竞争不锁,有竞争挂起,转为轻量锁

    11、对象锁: 锁住对象

    12、线程锁:

    13、锁粗化: 多锁变成一个,自己处理

    14、轻量级锁: CAS 实现

    15、锁消除: 偏向锁就是锁消除的一种

    16、锁膨胀: jvm实现,锁粗化

    17、信号量: 使用阻塞锁 实现的一种策略

    二、锁的类别

    1. 类锁:
    在代码中的方法上加了static和synchronized的锁,或者synchronized(xxx.class)的代码段;

    2.对象锁:
    在代码中的方法上加了synchronized的锁,或者synchronized(this)的代码段;

    3.私有锁:
    在类内部声明一个私有属性如private Object lock,在需要加锁的代码段synchronized(lock)。

    三、锁的四种状态

    jvm系列 (三) ---锁的优化

    优化:
    自旋锁,锁消除,锁粗化

    状态:
    从低到高,只能升级不能降级:

    • 无锁状态:

    • 偏向锁状态:
      偏向锁的则是在无竞争的情况下,连CAS操作都不做

    • 轻量级锁状态:
      轻量级锁依据大部分的锁在同步周期内不存在竞争,使用CAS操作避免使用互斥量的开销

    • 重量级锁状态:
      重量级锁需要使用操作系统的互斥量(常常使用一个整型量,0表示解锁,而其他所有的值则表示加锁。通过互斥量使同一资源同时只允许一个访问者对其进行访问)来实现

    相关文章

      网友评论

          本文标题:java锁的概念

          本文链接:https://www.haomeiwen.com/subject/iwbqwftx.html