java内存区域和内存模型是不一样的东西,内存区域是指Jvm运行时将数据分区存储,强调对内存空间的划分。而内存模型是定义了线程和主内存之间的关系,即JVM在计算内存中的工作方式,如果我们想要深入了解JAVA并发编程,就要先理解好JAVA内存模型。
多线程编程的三个重要特性:
- 原子性:多个线程对一段代码的操作是互斥的
- 可见性:一个线程对于变量做出的修改能够及时被其他线程查看到
- 有序性:除了满足happens-before原则的语句,其他的基本指令的顺序都是可以被编译器优化的
以上三个特性是实现线程安全的基础。
原子性
java中提供多种保证原子性的机制:
- CompareAndSwap(CAS)
意即比较并交换,这里使用了CPU的CAS指令保证了操作的原子性,当一个线程要改变一个变量t的值,需要向cpu提供期待的t的值x,以及调整后的值y,CAS指令会比较主内存中t的真实值和x,如果两者相等,就把y赋值给t,否则不做任何操作。
java.util.concurrent.atomic(JUC)包中提供了支持CAS操作的工具类,包括针对基本数据类型的AtomicInteger、AtomicLong等,以及针对未知对象的AtomicReference,或者是针对对象的某个变量的AtomicReferenceFieldUpdater。它们的基本思路就是在一个while循环中调用CAS,直到修改成功。
相关文章
超详细干货!Docker+PXC+Haproxy搭建高可用强一致性的MySQL集群
前言 干货又来了,全程无废话,可先看目录了解。 MySQL搭建集群最常见的是binlog方式,但还有一种方式是强一致性的,能保证集群节点的数据一定能够同步成功,这种方式就是pxc,本篇就使用图文方式一...
java基础——static关键字
static关键字 1.Java中的静态 1.1static修饰成员变量 static修饰的成T...
确保某个BeanDefinitionRegistryPostProcessor Bean被最后执行的几种实现方式
一、事出有因 二、解决方案困境 三、柳暗花明,终级解决方案 第一种实现方案 第二种实现方案 第三种实现方案 四、引发的思考 一、事出有因 最近有一个场景,因同一个项目中不同JAR包依赖同一个组件,...
[简单] 基于注解玩转excel导出导入
基于注解玩转excel导出导入 demo 请 加入 598347590 技术解决群获取 话不多说 开始 ```java org.apache.poi poi 3.13 org.apache.poi p...
spring aop
代理相关的概念 advisor 包含切入点和切入方法 切点 pointcut 意即在哪里做切入 切入方法 advice 包括 运行前 返回后 抛出异常后 最终finally 环绕 五种 spring支...
关于管理编程社网站的知识与技巧(自用,必看)
关于管理编程社网站的知识与技巧(自用,必看) 最近呢,咱们编程社的网站终于是又修好了。趁着这个机会,笔者决定是要写一篇攻略,专门用于了解与锻炼建立网站的能力。所以,如果现在是你在管理编程社的网站,这些...
Redis的字符串底层是啥?为了速度和安全做了啥?
面试官:Redis有哪些数据类型? 我:String,List,set,zset,hash 面试官:没了? 我:哦哦哦,还有HyperLogLog,bitMap,GeoHash,BloomFilter...
spring security登录认证流程
spring security登录认证流程 1、前端携带用户名和面膜发送请求,controller接收到后,调用service的login方法 2、根据传过来的用户名和密码生成UsernamePass...
asp.net 客户邮件群发功能 SendMail 发送静态化html
背景:现在几乎每个企业都需要使用邮箱,在客户数量庞大的情况下,如何给不同层次的客户送去节日关怀,让他们知道我们的好消息和新产品,是我们迫切需要解决的问题。效果如图所示[En]Background: n...
ucore操作系统学习(一) ucore lab1系统启动流程分析
一、ucore操作系统介绍 操作系统作为一个基础系统软件,对下控制硬件(cpu、内存、磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异;对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度。站...
垃圾收集器与内存分配策略
程序计数器、虚拟机堆栈和本地方法堆栈在创建和执行线程后创建和销毁。堆栈中的堆栈帧通过放大的入口和出口被推入和退出堆栈。在确定类结构时,分配给每个堆栈帧的内存量基本上是已知的,因此这些区域中的内存分配和...
阿里云ecs自定义镜像并导出到OSS、并下载
OSS是什么? 有个文章说得比较浅显清楚:什么是OSS?5分钟带你了解! - 知乎 (zhihu.com) 这里摘选核心内容: 白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了文件下载、...