Java——》公平锁、非公平锁

news/2024/5/17 16:53:14 标签: java, 公平锁, 非公平锁, synchronized, ReentrantLock

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Java——》公平锁、非公平锁

一、概念

锁类型特点描述
公平锁排队竞争锁线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,直接排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。
公平锁先插队竞争锁,如果不成功再排队竞争锁线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,先尝试竞争锁资源
- 成功拿到锁资源:开心,插队成功。
- 没有拿到锁资源:依然要排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。

二、分类

锁类型描述
synchronized只有非公平锁
ReentrantLock公平锁 & 非公平锁
ReentrantReadWriteLock公平锁 & 非公平锁

三、非公平锁的优点

每当锁被释放后,任何一个线程都有机会竞争到锁,有效提高执行性能

四、非公平锁的缺点

可能会产生线程饥饿现象。


http://www.niftyadmin.cn/n/5021457.html

相关文章

冠达管理:多场学术会议重启 医药板块行情回暖

9月11日,A股医药板块全天强势领涨,主力资金净流入超越50亿元,申万医药生物指数收涨2.62%。细分赛道中,中药、制药、立异药、瘦身药等板块领涨。个股方面,常山药业、金凯生科、通化金马、灵康药业等个股涨超10%。 音讯…

【笔试强训选择题】Day40.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

H.265 视频在浏览器中的播放问题探究

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

Three.js-绘制矩形shader

绘制图中的嵌套矩形框 方法: vec3 drawRect(vec2 st,vec2 center,float width,float height,float thickness,vec3 fillColor, vec3 strokeColor) {vec3 color vec3(0);float halfWidth width * .5;float halfHeight height * .5;float halfTickness thicknes…

Linux Debian12使用git将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程,本文不做介绍。 gitee官网:https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git,可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

Ceph入门到精通-Macvlan网络模式

Docker中的Macvlan网络模式提供了一种将容器直接连接到宿主机网络的方式&#xff0c;使得容器可以拥有自己的MAC地址和与宿主机网络的直接连接。以下是使用Macvlan网络模式的一般步骤&#xff1a; 创建Macvlan网络&#xff1a; docker network create -d macvlan --subnet<s…

第十章 数组和指针

本章介绍以下内容&#xff1a; 关键字&#xff1a;static 运算符&#xff1a;&、*&#xff08;一元&#xff09; 如何创建并初始化数组 指针&#xff08;在已学过的基础上&#xff09;、指针和数组的关系 编写处理数组的函数 二维数组 人们通常借助计算机完成统计每月的支出…

Git在已有的项目中引入Submodule子模块管理:添加、更新、删除(实战示例代码)

前言 在进行Git版本控制的过程中&#xff0c;有时候我们需要在已有的项目中引入子模块&#xff0c;以便复用其他独立的Git存储库的代码或文件。本文将详细介绍如何在已有项目下添加、更新和删除Git的Submodule子模块&#xff0c;并提供相关的示例代码。 实战场景 假设我们已…