Java锁之公平和非公平锁
Java锁之公平和非公平锁
目录
- 公平锁和非公平锁概念
- 公平锁和非公平锁区别
- ReentrantLock和synchronized是公平锁还是非公平锁?
1. 公平锁和非公平锁概念
- 公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。
- 非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或者饥饿现象
2. 公平锁和非公平锁区别
- 公平锁:Threads acquire a fair lock in which they requested
- 公平锁:就是很公平,在并发坏境中.每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁.否则就会加入到等待队列中.以后会按照FIFO的规则从队列中取到自己。
- 非公平锁:a nonfair lock permis barging:threads requesting a lock can jump ahead of the queue of waiting threads if the lock
happens to be available when it is requested. - 非公平锁比较粗鲁,上来就直接尝试占有锁,如果尝试失败,就再采用类似公平锁那种方式。
3. ReentrantLock和synchronized是公平锁还是非公平锁?
- Java ReentrantLock 而言,通过构造函数指定该锁是否为公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。源码如下
Lock lock = new ReentrantLock();
点进去源码截图:
默认为非公平锁,当我们传入true
参数后,源码为
Lock lock = new ReentrantLock(true);
点进去源码为:
- 对于synchronized而言,也是一种非公平锁
Java锁之公平和非公平锁相关推荐
- java并发编程(三十五)——公平与非公平锁实战
前言 在 java并发编程(十六)--锁的七大分类及特点 一文中我们对锁有各个维度的分类,其中有一个维度是公平/非公平,本文我们来探讨下公平与非公平锁. 公平|非公平 首先,我们来看下什么是公平锁和非 ...
- Java多线程学习十五:公平锁和非公平锁,为什么要“非公平”?
什么是公平和非公平 公平锁 指的是按照线程请求的顺序,来分配锁: 非公平锁 指的是不完全按照请求的顺序,在一定情况下,可以允许插队.但需要注意这里的非公平并不是指完全的随机,不是说线程可以任意插队,而 ...
- 云阶月地,关锁千重(一.公平和非公平)
看到文章的标题是不是很诧异,一个搞技术的为什么要搞这么文艺的话题呢?标题说关锁千重,是不是很形象,我们在开发中的锁不也是多种多样么? Lock 既然之前说了锁千重,那锁到底有多少种,他们的分类又是怎么 ...
- 24-讲一讲公平锁和非公平锁,为什么要“非公平”?
什么是公平和非公平 首先,我们来看下什么是公平锁和非公平锁,公平锁指的是按照线程请求的顺序,来分配锁:而非公平锁指的是不完全按照请求的顺序,在一定情况下,可以允许插队.但需要注意这里的非公平并不是指完 ...
- 公平锁和非公平锁-ReentrantLock是如何实现公平、非公平的
转载:https://www.jianshu.com/p/5104cd94dbe0 1.什么是公平锁与非公平锁 公平锁:公平锁就是保障了多线程下各线程获取锁的顺序,先到的线程优先获取锁. 非公平锁:非 ...
- java -锁(公平、非公平锁、可重入锁【递归锁】、自旋锁)
1.公平锁.非公平锁 2.可重入锁(递归锁) 3.自旋锁 AtomicReference atomicReference = new AtomicReference();//原子引用线程 下面代码5秒 ...
- java公平索非公平锁_Java 并发编程中使用 ReentrantLock 替代 synchronized
Java 5 引入的 Concurrent 并发库软件包中,提供了 ReentrantLock 可重入同步锁,用来替代 synchronized 关键字原语,并可提供更好的性能,以及更强大的功能.使用 ...
- java公平索非公平锁_java中的非公平锁不怕有的线程一直得不到执行吗
首先来看公平锁和非公平锁,我们默认使用的锁是非公平锁,只有当我们显示设置为公平锁的情况下,才会使用公平锁,下面我们简单看一下公平锁的源码,如果等待队列中没有节点在等待,则占有锁,如果已经存在等待节点, ...
- 乐观锁、悲观锁和公平、非公平
今天心情:我是一个程序员,现在已经走向了逼不得已通过写文章赚取流量来谋生的道路.可是现在流量惨淡,可是我并不惊慌.奥里给. 详细内容链接地址:https://zhuanlan.zhihu.com/p/ ...
最新文章
- 寻找数组中最小的k个数(快排和堆排)
- Mysql 图像二进制保存-Blocb、TinyBlob、MediumBlob、LongBlob
- 职业学校计算机主要学什么条件,职业学校计算机教学计划
- centOS 6.4 vsftpd 500 illegal port command
- linux shell 多线程执行程序
- 无法在驱动器0分区上安装windows 解决方法
- 分享一些Java常见的面试题,大厂都爱用
- Android输入法
- 【转】android开发 dts、各种接口porting----不错
- 计算机未安装OCR应用程序,OCR使用的常见问题及解决(转载)
- 流媒体 - 02 常用命令(gst+ffmpeg+v4l2)
- mysql两个等号是什么运算符_什么是MySQL中的这个运算符=?
- 《麦肯锡工作法》读书分享
- 苹果发布无线充新专利,苹果Find My技术成为近几年苹果的重要创新
- 小型餐饮管理系统(c++/win32 SDK/MYSQL 数据库)
- 类似新浪微博评论的 @ 及 #某话题# 功能的实现
- Jackson,Gson,Fastjson 的对比
- IOS性能调优系列:使用Zombies动态分析内存中的僵尸对象
- MySQL 查询排名
- SQL——分组统计查询