日记17

news/2025/10/27 8:44:23/文章来源:https://www.cnblogs.com/ly0723/p/19167798

今天正式进入多线程领域,用“卖票案例”重现了线程安全问题,再通过三种方案解决,终于理解了“并发”与“同步”的核心逻辑。

  • 核心实践:用三个线程模拟卖100张票,未加同步时出现“超卖”(卖出102张)和“重复卖”(同一张票卖两次),原因是多个线程同时操作 ticket 变量,出现了“指令交错”。
  • 解决方案对比:分别用“同步代码块(synchronized关键字)”“同步方法”“Lock锁”三种方式修复,发现 Lock 锁比 synchronized 更灵活(可手动控制锁的获取与释放),但需要手动写 finally 释放锁,避免死锁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构师必备:限流方案选型(使用篇)

大家好,我是Java烘焙师。为了避免突增流量引起服务雪崩,需要对接口、存储资源做限流保护,根据系统负载情况设置合适的限流值。下面结合笔者的经验和思考,对主要限流方案的选型做一下总结,本篇先看如何使用,下一篇…

10月第一篇

《程序员修炼之道》阅读笔记:第一阶段 程序员的“职业身份觉醒” 《程序员修炼之道:从小工到专家》开篇便抛出一个振聋发聩的命题:“你是一名专业人士,还是一个代码工人?” 这句话像一把钥匙,瞬间打开了我对 “程…

2025 年青岛点焊机厂家最新推荐榜,聚焦技术实力与市场口碑深度解析螺母/自动/螺栓/储能/汽车零部件点焊机厂家推荐

引言 当前青岛点焊机市场品牌繁杂,产品在适配性、工艺水平、智能控制及稳定性上差异显著,部分产品还存在价格虚高、售后保障不足等问题。汽车制造、家用电器、五金制品等领域企业,对高性能、高性价比的中频、螺母、…

日记12

今天聚焦 ArrayList 与 LinkedList 的底层差异,用“10万次增删查”测试验证性能区别,彻底跳出“只会用API”的误区。核心突破:搞懂了两者的本质区别—— ArrayList 基于动态数组,查询快(通过索引直接定位)但增删…

日记15

今天不再满足于“try-catch捕获异常”,而是深入理解异常体系,还动手写了第一个自定义异常,解决“业务错误无法用系统异常表达”的问题。关键收获:理清了 Checked Exception (编译时异常,如 IOException ,必须处…

Sqlite EF For ConsoleCore

SqliteEF For Asp.NetCore在跨平台开发中使用Sqlite EF 框架 1. 安装依赖包 install-package Microsoft.EntityFrameworkCore install-package EntityFrameworkCore.Sqlite install-package Microsoft.EntityFramework…

日记14

今天不再满足于“try-catch捕获异常”,而是深入理解异常体系,还动手写了第一个自定义异常,解决“业务错误无法用系统异常表达”的问题。关键收获:理清了 Checked Exception (编译时异常,如 IOException ,必须处…

日记16

今天正式进入多线程领域,用“卖票案例”重现了线程安全问题,再通过三种方案解决,终于理解了“并发”与“同步”的核心逻辑。核心实践:用三个线程模拟卖100张票,未加同步时出现“超卖”(卖出102张)和“重复卖”(…

三年级小学生日记范文

不知所云。也可以叫做补题日记(二)。 这个时候有人就要问了,“主播主播,你的《补题日记》《补题周记》《杂题不讲》《一些问题》《随便什么标题。》难道不更了吗?” 对此,我的回答是: A - JamBrains

easy-query暴打efcore(包括其他所有orm),隐式Group看我如何在子查询做到极致的性能天花板

easy-query暴打efcore(包括其他所有orm),隐式Group看我如何在子查询做到极致的性能天花板 介绍 文档地址 https://www.easy-query.com/easy-query-doc/ GITHUB地址 https://github.com/dromara/easy-query GITEE地址 …

完整教程:深入理解-自然拼读(英语)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

线程属性的相关设置详解 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

应用安全 --- 在线可执行文件分析

应用安全 --- 在线可执行文件分析https://www.unpac.me/results/556bdbc0-32f7-467f-ad28-42d5cf9112be

Git本地与远程SSH连接配置

一、查看Git用户名/密码/邮箱,及设置git配置 1、查看信息:查看用户名 :git config user.name查看密码: git config user.password查看邮箱:git config user.email2、设置信息(--global 全局设置)git config --gl…

能在0.02秒内找到最优解的华容道程序

https://www.cnblogs.com/funwithwords/p/19158097#include <stdio.h> #include <stdint.h> #include <string.h> #include <time.h> #include <immintrin.h> #include <xmmintrin.h…

Sparkle签名检查绕过漏洞分析

本文详细分析了CVE-2025-0509安全漏洞,该漏洞存在于Sparkle更新框架2.6.4之前版本,攻击者能够绕过(Ed)DSA签名检查替换已签名的更新包,构成高风险安全威胁。Sparkle签名检查绕过漏洞分析 漏洞概述 CVE-2025-0509是一…

openEuler安装Oracle踩坑

不得不说Oracle安装在Windows上就够麻烦了,到Linux上直接地狱难度. 众所周知Oracle是收费软件,所以什么从仓库一键安装就不要想了, 现在更是变本加厉,下载必须注册Oracle账号,希望大家以后都别用了吧,用"世界上最…

RPC ServiceModel.Grpc C#

RPC ServiceModel.Grpc C#RPC ServiceModel.Grpc C# 在 DogWatcher 和 HeartbeatService 中,CancellationToken 的核心作用是响应外部取消信号(如服务停止、客户端断开连接等),避免资源泄漏并确保程序优雅退出。…

通过onvif ptz 控制摄像头以及通过opencv 实时进行数据处理

通过onvif ptz 控制摄像头以及通过opencv 实时进行数据处理是一个简单玩法,主要是设计基于云边端的玩法,通过mediamtx 或者ffmpeg 对于边缘的视频进行处理,之后转发到其他流服务,之后云端或者边缘服务通过通过openc…

【GitHub每日速递 251027】14.3k star! 告别AI开发痛点!Parlant让大模型指令遵循不再是难题

原文:https://mp.weixin.qq.com/s/KjAS4gDjAzWtmHkBLoo64Q 告别AI开发痛点!Parlant让大模型指令遵循不再是难题 parlant 是一个专注于控制能力的LLM代理工具。简单讲,它让大语言模型像智能助手一样执行实际任务,快速…