公平锁非公平锁
公平锁―是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。
非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或者饥饿现象

对ReentrantLock而言
通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。

对于Synchronized而言,也是一种非公平锁

可重入锁(也叫做递归琐)
指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码,在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁
也就是说,线程可以进入任何一个它已经拥有的锁所同步着的代码块。

synchronized版本

Reentrantlock版本



比如房子有一个大门,有一把琐,虽然卫生间也有一把锁,但是进入大门之后,就可以随意进入卫生间

公平锁非公平锁和可重入锁(递归锁)相关推荐

  1. 云阶月地,关锁千重(一.公平和非公平)

    看到文章的标题是不是很诧异,一个搞技术的为什么要搞这么文艺的话题呢?标题说关锁千重,是不是很形象,我们在开发中的锁不也是多种多样么? Lock 既然之前说了锁千重,那锁到底有多少种,他们的分类又是怎么 ...

  2. 可重入锁/不可重入锁,公平锁/非公平锁,乐观锁/悲观锁,独享锁/共享锁,偏向锁/轻量级锁/重量级锁,分段锁,自旋锁

    在并发编程中,会涉及到各种各样的锁,这篇文章主要介绍各种锁的分类以及作用. 介绍的内容如下: 可重入锁/不可重入锁 公平锁/非公平锁 乐观锁/悲观锁 独享锁/共享锁 偏向锁/轻量级锁/重量级锁 分段锁 ...

  3. 第二季:5公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁【Java面试题】

    第二季:5值传递和引用传递[Java面试题] 前言 推荐 值传递 说明 题目 24 TransferValue醒脑小练习 第二季:5公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自 ...

  4. 常⻅锁策略(1. 乐观锁 悲观锁2. 公平锁 非公平锁3. 读写锁4. 可重入锁 自旋锁)

    目录 1. 乐观锁 & 悲观锁 1.1乐观锁定义 1.2 乐观锁实现 -- CAS 1.3 悲观锁定义和应⽤ 2. 公平锁 & 非公平锁 3. 读写锁 3.1 读写锁 3.2 独占锁 ...

  5. Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”

    在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 线程锁 乐观锁 VS 悲 ...

  6. 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁

    在Java并发场景中,会涉及到各种各样的锁,比如:高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这篇文章来详细介绍各种锁的分类: 公 ...

  7. java队列加锁_java并发-----浅析ReentrantLock加锁,解锁过程,公平锁非公平锁,AQS入门,CLH同步队列...

    前言 为什么需要去了解AQS,AQS,AbstractQueuedSynchronizer,即队列同步器.它是构建锁或者其他同步组件的基础框架(如ReentrantLock.ReentrantRead ...

  8. 公平锁非公平锁的实际使用_面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》...

    作者:小傅哥 博客:https://bugstack.cn 专题:面经手册 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 Java学多少才能找到工作? 最近经常有小伙伴问我,以为我的经验来看 ...

  9. Java锁之公平和非公平锁

    Java锁之公平和非公平锁 目录 公平锁和非公平锁概念 公平锁和非公平锁区别 ReentrantLock和synchronized是公平锁还是非公平锁? 1. 公平锁和非公平锁概念 公平锁:是指多个线 ...

最新文章

  1. java rhino js类_让Rhino JS看Java类
  2. Apache Flink 零基础入门(一):基础概念解析
  3. 你不知道的JS(this)---#
  4. ceres学习之平面拟合
  5. 石油化工设备维护检修规程_旋回破碎机横梁臂架、衬板、内外铜套检修步骤及设备检修维护要点...
  6. Ubuntu16.04下tensorflow安装
  7. shell的date命令:使用方法,以及小时、分钟的计算
  8. angularjs学习第四天笔记(第一篇:简单的表单验证)
  9. 《Linux命令行与shell脚本编程大全》 第一、二章 学习笔记
  10. bzoj 2795 [Poi2012]A Horrible Poem hash+线性筛
  11. 现代通信原理2.5:确定信号的能量谱密度、功率谱密度与自相关函数
  12. Xftp连接Linux 虚拟机
  13. 两数互素有什么性质_两个数互质是什么意思 判断互质数的方法有哪些
  14. hexo添加文章更新时间
  15. 卸载的软件电脑重启后又出现了,怎么办?
  16. Mbus新增主动报警功能,简单问题的波折路程。
  17. Python编程输出三角形的边长及面积
  18. root权限获取排行榜,root权限软件排行榜
  19. timesten支持mysql吗_TimesTen数据库初探
  20. 计算机软件设计基础课后答案,2012年计算机二级VFP程序设计基础习题及答案

热门文章

  1. 25 MM配置-采购-无物料主数据的项目输入帮助
  2. 48 FI配置-财务会计-固定资产-与总账集成-定义折旧范围到总账的过账方式
  3. python纵向数据分析_python数据分析三个重要方法之:numpy和pandas
  4. 360天擎默认卸载密码_用好360(四)
  5. 双栏模板图片标题无法居中_没想到吧,只用一张图片,你就可以做一份PPT!
  6. 动力环境监控系统论文_机房动力环境监控系统方案
  7. python只能对列表进行切片_Python中的列表
  8. Pytorch之Variable与tensor--它封装了Tensor,并整合了反向传播的相关实现,像装糖果(糖果就是数据即tensor)的盒子
  9. 什么是端到端模型(end-to-end learning)?
  10. mysql5.7.28下载_MySql5.7.28下载、安装、登陆详解