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

线程安全问题 --- 内存可见性问题

小王学习录

    • 本月鸡汤:
    • 什么是内存可见性问题
    • 引起内存可见性问题的原因
    • 如何解决内存可见性问题
    • volatile使用规范
    • 编外: 工作内存(工作存储区)

由前面文章介绍可以知道, 引起线程安全问题有 五个原因, 分别是: 线程抢占式执行, 随即调度(根本原因); 多个线程对同一变量执行 修改操作; 非原子操作; 内存可见性问题; 指令重排序. 而第二第三可以通过 上锁来解决, 第四第五需要用到 volatile关键字, 今天将介绍 volatile关键字

本月鸡汤:

人之所以痛苦, 在于追求错误的东西.

什么是内存可见性问题

所谓内存可见性, 就是当两个线程同时访问一个变量, 其中一个变量发生变化时, 另一个线程能够及时获取该变量的最新值, 注意区分这里的内存可见性和之前的脏读, 不可重复读
那么内存安全性问题便是当两个线程同时访问一个变量, 其中一个变量发生变化时, 另一个线程无法获取该变量最新值, 这个问题要使用volatile来解决

引起内存可见性问题的原因

– 先看如下代码和其运行结果:

import java.util.Scanner;public class ThreadDome1 {int a = 0;public static void main(String[] args) {ThreadDome1 t = new ThreadDome1();Thread t1 = new Thread(()
http://www.lryc.cn/news/186898.html

相关文章:

  • 消息队列 Kafka
  • 抽象轻松的java-mybatis简单入门
  • 012-第二代硬件选型
  • Spring中的设计模式
  • 软考 系统架构设计师系列知识点之软件质量属性(1)
  • GPT系列论文解读:GPT-1
  • 数学分析:含参变量的积分
  • 关于一篇ElementUI之CUD+表单验证
  • VUE模板编译的实现原理
  • 基础算法之——【动态规划之路径问题】1
  • 三十三、【进阶】索引的分类
  • VBox启动失败、Genymotion启动失败、Vagrant迁移
  • 一篇短小精悍的文章让你彻底明白KMP算法中next数组的原理
  • CSS盒子定位的扩张
  • SpringBoot整合POI实现Excel文件读写操作
  • 从零开始的力扣刷题记录-第八十七天
  • 【1】c++设计模式——>UML类图的画法
  • SAP UI5 指定 / 变更版本
  • SpringMVC中异常处理详解
  • PPT课件培训视频生成系统实现全自动化
  • Densenet--->比残差力度更大 senet-->本质抑制特征
  • 基于腾讯云的OTA远程升级
  • 如何在VS2022中进行调试bug,调试的快捷键,debug与release之间有什么区别
  • 初识jmeter及简单使用
  • Spring 在多线程环境下如何确保事务一致性
  • [Machine Learning] Learning with Noisy Data
  • C++中有哪些常用的标准库?
  • 软考-信息安全工程师概述
  • 2023-2024年华为ICT网络赛道模拟题库
  • 英特尔参与 CentOS Stream 项目