java并发编程汇总3:synchronized、volatile、java对象结构、CAS

本文深入解析Java并发编程中的synchronized和volatile关键字,以及Java对象头结构中的锁状态,包括无锁、偏向锁、轻量级锁和重量级锁的升级过程。同时探讨了volatile的内存语义实现,如内存屏障,以及其在并发中的原子、可见和一致性质。

参考之前写的博客:

Java 并发编程(三):synchronized、volatile 详解
java对象结构

 

梳理一下整体结构:

1、synchronized关键字(锁:阻塞式、重量级、对象锁机制monitor;

2、CAS(锁:乐观、非阻塞、无锁)、以及存在的三个问题;

3、Java对象头结构:

  • 包含:MarkWordKlass Word、数组长度、对象体、对齐字;
  • Klass Word:JVM通过这个指针确定对象是哪个类的实例
  • MarkWord中锁的四种状态:无锁01、偏向锁01、轻量级锁00、重量级锁10;
  • 偏向锁:不需要进行CAS操作来加锁和解锁;
  • 轻量级锁:使用CAS将对象头中的Mark Word替换为指向锁记录的指针。如果成功,当前线程获得锁,如果失败,表示其他线程竞争锁,当前线程便尝试使用自旋来获取锁;
  • 锁的升级过程:
  1. 初期锁对象刚创建时,还没有任何线程来竞争,对象的Mark Word是下图的第一种情形,这偏向锁标识位是0,锁状态01,说明该对象处于无锁状态(无线程竞争它)。
  2. 当有一个线程来竞争锁时,先用偏向锁,表示锁对象偏爱这个线程,这个线程要执行这个锁关联的任何代码,不需要再做任何检查和切换,这种竞争不激烈的情况下(准确的说:只有一个线程、没有竞争的情况下),效率非常高。这时Mark Word会记录自己偏爱的线程的ID,把该线程当做自己的熟人。如下图第二种情形。
  3. 当有两个线程开始竞争这个锁对象,情况发生变化了,不再是偏向(独占)锁了,锁会升级为轻量级锁,两个线程公平竞争,哪个线程先占有锁对象并执行代码,锁对象的Mark Word就执行哪个线程的栈帧中的锁记录。如下图第三种情形。
  4. 如果竞争的这个锁对象的线程更多,导致了更多的切换和等待,JVM会把该锁对象的锁升级为重量级锁,这个就叫做同步锁,这个锁对象Mark Word再次发生变化,会指向一个监视器对象,这个监视器对象用集合的形式,来登记和管理排队的线程。如下图第四种情形。

4、volatile关键字(锁:非阻塞、轻量级):

  • 涉及JMM、happens-before,三大性质:原子、可见、一致;
  • volatile的内存语义实现:内存屏障(4种类型);
  • volatile写是在前面和后面分别插入内存屏障,而volatile读操作是在后面插入两个内存屏障

 

 
内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位统的预测控制研究”展开,提出了一种结合Koopman算子理论与递归神经网络(RNN)的数据驱动建模方法,旨在对非线性纳米定位统进行有效线性化建模,并实现高精度的模型预测控制(MPC)。该方法利用Koopman算子将非线性统映射到高维线性空间,通过递归神经网络学习统的动态演化规律,构建可解释性强、计算效率高的线性化模型,进而提升预测控制在复杂不确定性环境下的鲁棒性与跟踪精度。文中给出了完整的Matlab代码实现,涵盖数据预处理、网络训练、模型验证与MPC控制器设计等环节,具有较强的基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位统的预测控制研究(Matlab代码实现)可复现性工程应用价值。; 适合人群:具备一定控制理论基础Matlab编程能力的研究生、科研人员及自动化、精密仪器、机器人等方向的工程技术人员。; 使用场景及目标:①解决高精度纳米定位统中非线性动态响应带来的控制难题;②实现复杂机电统的数据驱动建模与预测控制一体化设计;③为非线性统控制提供一种可替代传统机理建模的有效工具。; 阅读建议:建议结合提供的Matlab代码逐模块分析实现程,重点关注Koopman观测矩阵构造、RNN网络结构设计与MPC控制器耦合机制,同时可通过替换实际统数据进行迁移验证,深化对数据驱动控制方法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值