Java面试之锁-公平锁和非公平锁
Java锁之公平锁和非公平锁
概念
公平锁
是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列
非公平锁
是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁)
如何创建
并发包中ReentrantLock的创建可以指定析构函数的boolean类型来得到公平锁或者非公平锁,默认是非公平锁
/**
* 创建一个可重入锁,true 表示公平锁,false 表示非公平锁。默认非公平锁
*/
Lock lock = new ReentrantLock(true);
两者区别
公平锁:就是很公平,在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列中的第一个,就占用锁,否者就会加入到等待队列中,以后安装FIFO(先进先出)的规则从队列中取到自己
非公平锁: 非公平锁比较粗鲁,上来就直接尝试占有锁,如果尝试失败,就再采用类似公平锁那种方式。
题外话
Java ReenttrantLock通过构造函数指定该锁是否公平,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。
对于synchronized而言,也是一种非公平锁`
Java面试之锁-公平锁和非公平锁相关推荐
- java公平所与非公平所_一张图读懂Java非公平锁与公平锁
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820- 种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了,但是怀旧一下,欢迎加入六脉神剑Ja ...
- Java多线程学习十五:公平锁和非公平锁,为什么要“非公平”?
什么是公平和非公平 公平锁 指的是按照线程请求的顺序,来分配锁: 非公平锁 指的是不完全按照请求的顺序,在一定情况下,可以允许插队.但需要注意这里的非公平并不是指完全的随机,不是说线程可以任意插队,而 ...
- JAVA基础 | 一张图读懂非公平锁与公平锁
在Java并发编程中,公平锁与非公平锁是很常见的概念,ReentrantLock.ReadWriteLock默认都是非公平模式,非公平锁的效率为何高于公平锁呢?究竟公平与非公平有何区别呢? 首先先简单 ...
- 24-讲一讲公平锁和非公平锁,为什么要“非公平”?
什么是公平和非公平 首先,我们来看下什么是公平锁和非公平锁,公平锁指的是按照线程请求的顺序,来分配锁:而非公平锁指的是不完全按照请求的顺序,在一定情况下,可以允许插队.但需要注意这里的非公平并不是指完 ...
- java公平索非公平锁_java中的非公平锁不怕有的线程一直得不到执行吗
首先来看公平锁和非公平锁,我们默认使用的锁是非公平锁,只有当我们显示设置为公平锁的情况下,才会使用公平锁,下面我们简单看一下公平锁的源码,如果等待队列中没有节点在等待,则占有锁,如果已经存在等待节点, ...
- java 通过redis实现倒计时_突破Java面试(42) - Redis amp; ZooKeeper两种分布式锁实现的优劣...
0 Github 1 面试题 一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高? 2 考点分析 一般先问问你zk,然后 ...
- java锁(公平锁和非公平锁、可重入锁(又名递归锁)、自旋锁、独占锁(写)/共享锁(读)/互斥锁、读写锁)
前言 本文对Java的一些锁的概念和实现做个整理,涉及:公平锁和非公平锁.可重入锁(又名递归锁).自旋锁.独占锁(写)/共享锁(读)/互斥锁.读写锁 公平锁和非公平锁 概念 公平锁是指多个线程按照申请 ...
- java投票锁_Java并发编程锁之独占公平锁与非公平锁比较
Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...
- java 对变量加锁_Java最全锁剖析:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁...
乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用. 1.乐观锁 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会 ...
最新文章
- ThomasGDietterich_MachineLearning_personalSite
- python打印日志
- python实现表格_零基础小白怎么用Python做表格?
- CodeForces - 1341D Nastya and Scoreboard(dp+贪心)
- 排位重要还是媳妇儿重要?
- ibm liberty_使用Eclipse和Open Liberty的Java EE 8上的Java 9
- Java消息中间件--JMS规范
- python面向对象三大特性_深入理解Python面向对象的三大特性
- Bokeh 风格属性设置
- JSK-7 奇怪的国家【入门】
- OpenCV 直方图基础
- c语言crc编码函数,C语言:CRC校验
- Audio HAL 通话录音上下行分离
- 黑客小C小游戏(DEVC++)时不时会更新
- 数据库版本管理框架-Flyway
- 我眼中的Java大牛之孤尽老师
- MySQL 的主从复制原理详解高级
- Mobaxterm X server远程Linux服务器使用浏览器(firefox或google chrome)
- Java1Java2
- Openstack 安装之 Swift
热门文章
- iphone控制电脑_苹果远程控制电脑软件免费下载-超控Controlax(iPhone远程控制Windows)v1.1 最新版...
- 现代浏览器工作原理(一)
- Android的CheckBox(多选框)
- Android Camera 摄像 demo
- 配置Hibernate二级缓存步骤
- Spring注解解析
- PHP 发送HTTP post请求发送和获取
- jsp网页实现任意进制的数转换成任意进制数
- 全国计算机二级c语言答案,全国计算机二级C语言试题及答案
- 关于Cortex-M3处理器内核中断异常处理机制你了解多少?