专栏名称: 顶尖架构师栈
分享业务架构、技术架构、系统设计方案,以及微服务架构源码,提供业务场景答疑
今天看啥  ›  专栏  ›  顶尖架构师栈

【第10期】谈谈内存可见性和如何有效避免指令重排序

顶尖架构师栈  · 公众号  ·  · 2024-09-13 08:00

文章预览

    上一节我们了解了JMM内存模型的原理、作用,由于这一组规范的存在,我们在创建多线程处理任务时,JVM会给各个线程分配工作内存,这个工作内,存其实是主内存中的一个副本拷贝,是线程私有的,而线程在操作完主内存后会写回主存的共享变量,此时在写操作完成前,如果有另外一个线程读入此共享变量,那么就会出现线程不安全的问题,这一节,我们主要围绕JMM内存模型引发的线程安全问题,带你了解如何保证可见性以及如何有效避免指令重排序 1 线程安全切入点 在分析 JMM 抽象内存模型引发的问题前,我们先来看下,并发编程的三个特性 1.1 原子性 1.1.1 概述 原子性是指一个操作不能被打断,要么执行完要么不执行,即:"同生共死",类似事务操作 1.1.2 JMM中的8类原子操作 (1)lock(锁定):作用于主内存变量,把一个变量标识为一条线程独 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览