锁的分类

  1. 从线程是否需要锁定同步资源,分为
    乐观锁(互斥同步锁)
    – 可以简单理解为通常需要版本号控制
    – 举例:如git push
    – 适合:并发多读少写的情况
    悲观锁(非互斥同步锁)
    – 修改数据时把数据锁住别的线程无法访问改变
    – 缺点:可能会导致永久阻塞
    – 举例:如数据库select xxx for update
    –适合:临界区有IO操作、代码复杂、竞争激烈,并发多写入,避免大量自旋锁消耗。
  2. 多线程下是否可以共享一把锁,分为
    共享锁
    独占锁
  3. 多线程下是否需要排队,分为
    公平锁
    非公平锁
  4. 等待资源是是否自阻塞,分为
    自旋锁
    非自旋锁
  5. 同一个线程是否可以重复获得一把锁,分为
    可重复锁
    不可重复锁
  6. 是否可中断
    可中断锁
    不可中断锁
发布了90 篇原创文章 · 获赞 66 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 终极编程指南 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览