当前位置: 首页 > news >正文

Java常见技术分享-17-多线程安全-并发编程的核心问题的解决方案

可见性的解决方案

  • volatile 关键字(只能修饰变量)。 他的作用是 告诉JVM 这个变量不允许被缓存, 每次读写必须直接操作主内存。 这样 就能保证 没有缓存一致性的问题。
  • synchronized 关键字。 在进入代码块的时候 ,线程会读取主内存的变量值到自己的工作内存, 在执行完操作后, 又会写到主内存中,这样其他的线程就能立即看到。

原子性的解决方案

  • synchronized关键字, 把需要执行原子操作的代码块锁住, 就行了, 因为这个关键字 本身是互斥锁。
  • 使用AtomicInteger 原子类,这个类是靠CPU 的CAS指令 来确保原子性的,即乐观锁(核心思想 先尝试,失败了再重试)的底层实现,且实现方式是自旋锁, 所以在竞争激烈的时候,线程一直占用着CPU资源, 很耗费CPU资源, 不如用synchronized

有序性的解决方案

  • volatile 关键字。 他的作用是 禁止 编译器和CPU的指令排序优化,给多线程协作加上了顺序保障。
  • synchronized关键字, 因为同一个代码块只能被一个线程占用, 所以对于同一个代码块 不会有多线程协作, 也就不会有有序性的问题。 能确保指令重排后, 执行后的结果如预期一样。
http://www.jsqmd.com/news/155432/

相关文章:

  • 每天一个网络知识:什么是以太网虚拟专用网络?
  • 全国首批10城菁彩Vivid影厅启幕,《山河故人》重映见证影像新纪元
  • Java常见技术分享-18-多线程安全-进阶模块-并发集合与线程池
  • 以太网二层协议有哪些?
  • 【python大数据毕设实战】音乐内容智能推荐与市场趋势分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
  • Linux 入门必掌握的十大命令
  • 算法-回溯-14
  • 《创业之路》-761-《架构思维:从程序员到CTO》第四部 - 架构师的职业规划与能力成长:从执行者到战略引领者的跃迁,技术、业务与软技能的三角支撑。
  • YOLO与Prometheus Thanos Ruler集成:跨集群告警规则
  • YOLO与Kubeflow MLOps集成:端到端机器学习 pipeline
  • YOLO在噪音污染监测的应用:施工机械视觉识别
  • TCN-BiGRU回归+特征贡献SHAP分析+新数据预测+多输出,MATLAB代码
  • YOLO目标检测中的知识蒸馏实践:Teacher-Student架构
  • 《创业之路》-763-公司的组织架构服务于产品技术架构,技术架构服务于组织的业务服务,组织的业务服务于组织的战略,组织的战略服务于政府的规划、政府的规划服务于国家的战略。上下贯通,一脉相承,方为顺势。
  • 提示工程实战:如何用Prompt让游戏AI理解玩家的“隐藏需求”
  • 【毕业设计】基于SpringBoot的儿童医院挂号管理系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 推荐阅读:深入解析C语言编程中的指针与内存管理
  • YOLO模型训练资源使用趋势预测:基于历史数据分析
  • 事件委托(Event Delegation)
  • 【教程4>第10章>第11节】基于FPGA的图像双边滤波开发——3*3窗口像素提取/高斯权值/exp指数运算
  • YOLO模型缓存一致性维护:主从同步与失效传播
  • 推荐阅读:如何在C语言中通过函数返回结构体
  • 构建LLM支持的AI Agent创新思维系统
  • 采样率、信号频谱/频谱混叠原理与matlab仿真分析
  • YOLO模型灰度发布期间的竞品对比分析
  • YOLO在空气质量监测的应用:扬尘颗粒物视觉识别
  • ArchLinux 安装 VMware Workstation
  • YOLO在电磁辐射监测的应用:基站设备视觉识别
  • 高中语法练习解析100篇-007-Esther’s Gift of Books 埃丝特的赠书之情 - new
  • 年终复盘2.0:NLP自动萃取经验教训,构建可执行策略库