java并发编程——内存模型

本文介绍了Java并发编程中的内存模型(JMM),旨在解决线程间通信和同步问题。JMM保证了不同线程间共享变量的可见性,并通过lock、unlock、read、load、use、assign、store、write等操作实现线程间通信和同步。volatile关键字提供了可见性和禁止指令重排序的特性,确保并发场景下的数据一致性。同时,synchronized关键字提供原子性和可见性保证,确保线程安全。
摘要由CSDN通过智能技术生成

1. 并发编程基础概念

并发——在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行——源自百度百科

在并发编程中,我们需要处理两个关键问题:线程之间如何通信和线程之间如何同步,后续篇章将围绕这两个问题进行介绍。

线程通信:是指线程之间以何种机制来交换信息,在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。

线程同步:是指程序用于控制不同线程之间操作发生相对顺序的机制。在Java中,可以通过volatile,synchronized, 锁等方式实现同步。

本文主要介绍java的通信机制,刚介绍常见通信机制主要包括以下两种方式:共享内存:线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。

消息传递:线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享。

Java线程之间的通信由Java内存模型(本文简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。

2. JMM内存模型

JMM(Java Memory Model)是JVM规范中定义的一种Java内存模型,它的目的是屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台上到能达到一致的内存访问效果。

Java内存模型的主要定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样底层细节。首先简单说明几个常用名称定义:变量:这里指包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,后者是线程私有的,不会被共享。

主内存:在java中,实例域、静态域和数组元素是线程之间共享的数据,它们存储在主内存中。

工作内存:每条线程都有自己的工作内存,线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须在工

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值