解决线程中使用线程锁

问题:多线程操作同一个对象,利用锁保证数据操作的原子性

解决方案:使用线程锁

简要说明:线程锁本质上就是添加一个公共状态量,当线程拿到状态量后,则继续执行,否则就等待

扩展1:自己实现这个功能其实也很方便,可以创建一个队列,里边只塞一个值,每一个添加锁的线程,都去queue.get()值,拿到值会继续往下执行,否则等待,拿到值的等运行结束后,再往队列里queue.put()一个值即可。这里利用了队列本身的特性,当队列里没有值时,队列会处于阻塞状态。等到队列里有值时,会第一时间将值取出

扩展2:添加一个公共变量lock=1。当有线程拿到这个公共变量后,立即将lock值赋值为0,在条件中判断当lock为1时,继续执行,否则阻塞。拿到1值后的线程执行无再将值赋为1即可。另外一个线程逻辑可能会复杂一些,需要隔一段时间取一次lock值进行判断(心跳模式)。理论上讲,这种方式存在一定的隐患,没有很建议。

相关推荐
苍何1 分钟前
开源微信流 Windows,微信聊天记录,可以直接给 Codex 和 Obsidan 了
后端
代码什么用1 小时前
Spring基础使用
java·后端·spring
明月_清风2 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
蜗牛互联网2 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
全栈练习生3 小时前
AI Agent 沙箱
python·ai
SEO_juper4 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户69371750013845 小时前
2026,程序员的时代拐点到了
android·前端·后端
惜鸟5 小时前
从源码看 pi 的上下文管理:原始数据永久保留,模型视角按需裁剪
后端
量化分析码农5 小时前
【Python量化策略评估体系 #05】极端行情扛得住吗?2008/2015/2020 三场景压力测试
后端
十年Java程序媛5 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端