【并发设计模式】聊聊Balking是如何实现以及具体原理
前面的等待唤醒,其实是一个线程等待执行满足条件的逻辑,会一直死等,但是并不是全部的场景都需要死等。比如我们去坐车的时候,公交一直没来,那么就可以不去了。而等待唤醒是公交没来我就等他来了再去。
Guarded Suspension 模式会等待 if 条件为真,而 Balking 模式不会等待
这是二者之间本质的差别。
Balking模式是一种多个线程执行同一操作A时可以考虑的模式;说白了,就是多个人去买票,如果有人买到大家的票,剩余的人就可以不用在去买了。
如何实现
可以通过使用syn、lock、cas、对于共享变量不要求原子性的场景,可以使用volatile 等方式实现。
应用场景
在syn 从轻量级锁升级到重量级锁的时候,只有一个线程可以获取到锁。
单例模式
单例模式也是这样。
private volatile static MacComputer instance;/*** 获取一个对象* @return*/public static MacComputer getMac () {if (Objects.isNull(instance)) {synchronized (Objects.class) {if (Objects.isNull(instance)) {instance = new MacComputer();}}}return instance;}
单次初始化
在实际开发中,我们可以对于初始化的方式进行使用这种方式
package com.jia.dp;import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;/*** @author qxlx* @date 2023/12/31 5:16 PM*/
public class BalkingTest {private boolean inited = false;//第一种方式 synpublic synchronized void init() {if (!inited) {return;}inited = true;//业务逻辑}private Lock lock = new ReentrantLock();//第二种方式 lockpublic void init2() {try {lock.lock();if (!inited) {return;}inited = true;//业务逻辑} finally {lock.unlock();}}AtomicBoolean atomicBoolean = new AtomicBoolean(false);//第三种方式 caspublic void init3() {if (!atomicBoolean.get()) {return;}atomicBoolean.compareAndSet(Boolean.FALSE, Boolean.TRUE);//业务逻辑}}
相关文章:
【并发设计模式】聊聊Balking是如何实现以及具体原理
前面的等待唤醒,其实是一个线程等待执行满足条件的逻辑,会一直死等,但是并不是全部的场景都需要死等。比如我们去坐车的时候,公交一直没来,那么就可以不去了。而等待唤醒是公交没来我就等他来了再去。 Guarded Suspen…...
dubbo的一些问题思考
1.dubbo是啥 Dubbo 是一个高性能的 Java RPC(远程过程调用)框架,用于构建分布式服务架构。由阿里巴巴开发并开源,作为一个分布式服务框架,Dubbo 提供了丰富的功能,包括服务治理、远程调用、负载均衡、容错机…...

盛最多水的容器(力扣11题)
例题: 分析: 这道题给出了一个数组,数组里的元素可以看成每一个挡板,要找到哪两个挡板之间盛的水最多,返回盛水量的最大值。这其实是一个双指针问题。 我们可以先固定第一个挡板( i )和最后一个挡板( j ),…...

.babky勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
导言: 网络安全威胁不断进化,其中.babky勒索病毒引起了广泛关注。这篇文章91数据恢复将深入介绍.babky的狡猾特征,以及在遭受其袭击时如何高效地恢复被加密的数据,并提供实用的预防方法。当面对被勒索病毒攻击导致的数据文件加密…...
20240103-通过布局让自己的生活有有意义人生有价值
最近听到看到的一些词 心力、稀缺、卓有成效、知行合一、致良知、心即理、事上练 最近琢磨出这么一个道理,就是任何人做事情其实都有内心趋势和一套适合他自己的内心驱动的方法。我们经常意识不到,我时常也会去寻求做一件事,是不是有特定的…...

JDK17 - 开发者视角,从 JDK8 ~ JDK17 都增加了哪些新特性
目录 前言 一、站在开发视角,从 JDK8 升级到 JDK17 都有哪些新特性 1.1、JDK8 新特性 1.1.1、Optional 类 a)简介 b)使用方法 c)使用场景 1.2、JDK9 新特性 1.2.1、Optional - ifPresentOrElse 解决 if-else 1.2.2、Opt…...
八股文打卡day11——计算机网络(11)
面试题:HTTP多个TCP连接怎么实现? 我的回答: 1.HTTP1.0的时候,一个TCP连接只能进行一次请求响应。可以建立多个连接到服务器,这样就可以同时进行多个请求响应,提高传输效率。 2.HTTP1.1推出了持久连接&am…...

在Android设备上设置和使用隧道代理HTTP
随着互联网的深入发展,网络信息的传递已经成为人们日常生活中不可或缺的一部分。对于我们中国人来说,由于某些特殊的原因,访问国外网站时常常会遇到限制。为了解决这个问题,使用代理服务器成为了许多人的选择。而在Android设备上设…...

Paddle3D 2 雷达点云CenterPoint模型训练
2 Paddle3D 雷达点云CenterPoint模型训练–包含KITTI格式数据地址 2.0 数据集 百度DAIR-V2X开源路侧数据转kitti格式。 2.0.1 DAIR-V2X-I\velodyne中pcd格式的数据转为bin格式 参考源码:雷达点云数据.pcd格式转.bin格式 def pcd2bin():import numpy as npimport…...

RabbitMQ集群的简单说明
1.普通集群(副本集群) 当集群中某一时刻master主节点宕机,可以对master中Queue中的消息进行备份。而就算master宕机了,从节点不会对外提供服务,等到master节点恢复后,系统才会恢复正常。 主从架构的缺点是队列中的消息只是位于主节…...

支付宝沙箱支付-验签出错之编码集异常
异常信息 invalid-signature 错误 验签出错 错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为: alipay_sdkalipay-sdk-java-dynamicVersionNo&....官方通用…...

图像分割-漫水填充法 floodFill (C#)
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的VB版本请访问:图像分割-漫水填充法 floodFill-CSDN博客 FloodFill方法是一种图像处理算法,它的目的是…...

在pycharm中jupyter连接上了以后显示无此库,但是确实已经安装好了某个库,使用python可以跑,但是使用ipython就跑不了
今天遇到一个事情,就是用pycharm的jupyter时,连接不上,后来手动连接上了以后,发现环境好像不对。 一般来说,这里会是python3,所以里面的环境也是普通python的环境,并没有我下载的库,…...

C++多态性——(3)动态联编的实现——虚函数
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 成功的秘诀就在于多努力一次ÿ…...

docker部署mysql
1.查找mysql镜像 [rootVM-4-5-centos ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-sourc…...
python代码大全(持续更新)
读写文件 # 读取文件 with open(file.txt, r) as file:content file.read()# 写入文件 with open(file.txt, w) as file:file.write(Hello, World!)HTTP请求 import requestsresponse requests.get(https://api.example.com/data) data response.json()JSON处理 import j…...
C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# 处理程序异常相关技术
C# 入门基础知识 - C# 处理程序异常相关技术 第11节 处理程序异常相关技术11.1 捕获异常11.2 清除、处理所有异常11.3 引发异常11.4 预定义异常类11.5 自定义异常类11.6 异常的综合运用 更多C#基础知识点可查看:C#学习笔记 - C#基础知识 - C#从入门到放弃 第11节 处…...
[python]项目怎么使用第三方库
要在Python项目中使用第三方库,可以按照以下步骤进行: 安装第三方库:使用pip命令安装要使用的第三方库。例如,要安装requests库,可以运行以下命令: pip install requests导入库文件:在Python项…...

java每日一题——双色球系统(答案及编程思路)
前言: 打好基础,daydayup! 题目:要求如下(同时:红球每个号码不可以相同) 编程思路:1,创建一个可以录入数字的数组;2,生成一个可以随机生成数字的数组…...

java的mybatis
一.spring 整合单元测试 二.lombok 三.注解方式开发 四.xml 方式开发 五.动态sql...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...

Excel 怎么让透视表以正常Excel表格形式显示
目录 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总...