java内存模型

本文深入探讨Java内存模型(JMM),介绍其如何确保不同平台上的并发一致性。覆盖主内存与工作内存概念、内存交互操作、volatile关键字特性及先行发生原则等内容。

一、概述

java虚拟机规范中试图定义一种java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的并发效果。在此之前,主流程序语言(C/C++等)直接使用物理硬件(操作系统的内存模型),但会因为平台的不同而发生并发访问错误。
JDK1.5(实现了JSR-133)发布后,java的内存模型已经成熟和完善起来了。

二、主内存和工作内存

  1. Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储都内存和从内存中取出变量这样的底层细节。此处的变量包括实例字段、静态字段和构成数组对象的元素,但是不包括局部变量和方法参数,因为后者是线程私有的,不存在竞争问题。
  2. Java内存模型规定了所有变量都存储在主内存(虚拟机内存的一部分)中。每条线程还有自己的工作内存(类比高速缓存),线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值得传递均需要通过主内存来完成,线程、主内存、工作内存三者的交互关系如下:

三、内存间的交互操作

  1. lock(锁定):作用于主内存的变量,它把一个变量表示为一条线程独占的状态。
  2. unock(解锁):作用 于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。
  3. read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的load动作使用。
  4. load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中。
  5. use(使用):作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个操作。
  6. assign(赋值):作用域工作内存的变量,它把一个执行引擎接收到的值赋值给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。
  7. store(存储):作用于工作内存的变量,它把工作内存中一个变量的值传送到主内存中,以便随后的write操作使用。
  8. write(写入):作用于主内存的变量,它把store操作从工作内存中得到的变量的值放入主内存的变量中。

四、volatile

  1. java虚拟机提供的最轻量级的同步机制。
  2. 当一个变量被定义成volatile后,它将具备两种特性。第一是保证此变量对所有线程的可见性(指当一条线程修改了这个变量的值,新值对于其他线程来说可以立即得知的),但该变量在各个线程的工作内存不存在一致性问题,从字节指令来看,栈顶变量会过期。第二是禁止指令重排序优化

五、long、double型变量的特殊规则

  1. 允许虚拟机将没有被volatile修饰的64位数据的读写操作划分为两次32位的操作来进行,即所谓的非原子性的协定。

六、原子性、可见性与有序性

  1. 原子性:提供了原子性操作,即使是long和double数据,在处理上也大多作为原子操作对待。
  2. 可见性:指当一个线程修改了共享变量的值,其他线程能够立即得知这个修改。volatile、synchronized和final都能实现可见性。
  3. 有序性:如果在本线程内观察,所有的操作都是有序的;如果在一个线程中观察另一个线程,所有操作都是无序的。

七、先行发生原则

  1. 程序次序规则。
  2. 管程锁定规则。
  3. volatile变量规则。
  4. 线程启动规则。
  5. 线程终止规则。
  6. 线程中断规则。
  7. 对象终结规则。
  8. 传递性。
内容概要:本文系统阐述了智能物流路径规划的技术体系与实践应用,涵盖其发展背景、核心问题建模、关键算法、多目标与动态环境处理、系统架构及典应用场景。文章以车辆路径问题(VRP)及其变体为核心数学模,介绍了从Dijkstra、A*等单智能体算法到多车VRP的元启发式求解方法(如遗传算法、蚁群算法、大规模邻域搜索),并深入探讨了多目标优化(成本、时间、碳排放)与动态环境(实时订单、交通变化)下的自适应规划策略。结合城市配送、干线运输、场内物流等案例,展示了路径规划在提升效率、降低成本方面的实际价值,并分析了当前面临的复杂性、不确定性等挑战,展望了AI融合、数字孪生、车路协同等未来趋势。; 适合人群:具备一定物流、运筹学或计算机基础,从事智能交通、物流调度、算法研发等相关工作的技术人员与管理人员,工作年限1-5年为宜。; 使用场景及目标:①理解智能物流路径规划的整体技术架构与核心算法原理;②掌握VRP建模方法与多目标、动态环境下路径优化的实现策略;③为物流系统设计、算法选与系统优化提供理论依据与实践参考; 阅读建议:建议结合文中案例与数学模,重点理解算法选择与实际业务场景的匹配逻辑,关注动态规划与多目标优化的工程实现难点,可配合仿真工具或开源求解器进行实践验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值