news 2026/5/1 11:15:59

Java并发编程中的final域介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java并发编程中的final域介绍

      与锁和volatile相比,对final域的读和写更像是普通的变量访问。下面将介绍final域的内存语义。

一、final域的重排序规则

对于final域,编译器和处理器要遵守两个重排序规则。

1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。例如这里的(1)和(3)之间不能重排序。

2)初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。例如这里的(2)和(2)之间不能重排序。

下面通过一些示例性的代码来分别说明这两个规则。

public class FinalExample { int i; // 普通变量 final int j; // final变量 static FinalExample obj; public FinalExample() { // 构造函数 (1) i = 1; // 写普通域 j = 2; // 写final域 } public static void writer() { // 写线程A执行 obj = new FinalExample(); } public static void reader() { // 读线程B执行 (2) FinalExample object = obj; // 读对象引用(3) int a = object.i; // 读普通域 int b = object.j; // 读final域 } }

       假设一个线程A执行writer()方法,随后另一个线程B执行reader()方法。下面我们通过这两个线程的交互来说明这两个规则。

二、写final域的重排序规则

       写final域的重排序规则禁止把final域的写重排序到构造函数之外。这个规则的实现包含下面2个方面。

     

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:19:43

java计算机毕业设计校园旧物交易系统 高校二手闲置物品交易平台的设计与实现 基于SpringBoot的校园跳蚤市场系统

计算机毕业设计校园旧物交易系统m198z9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。毕业季“搬家季”,成堆的教材、台灯、小风扇从五楼搬到垃圾站,不如…

作者头像 李华
网站建设 2026/5/1 7:22:48

Springboot家政服务管理系统w6nqa(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能:用户,员工,服务项目,服务类型,服务订单,服务评价开题报告内容一、选题背景与意义1.1 选题背景随着城市化进程加速和生活节奏加快,家政服务需求呈现爆发式增长。据国家统计局数据显示,2024年我国家政服务业市场规模突…

作者头像 李华
网站建设 2026/5/1 4:35:04

含储能及sop的多时段配网优化模型Matlab实现

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码获取及仿…

作者头像 李华
网站建设 2026/5/1 10:57:52

简历智能优化平台开发:求职者的AI军师登场

简历智能优化平台开发:求职者的AI军师登场 在当今竞争激烈的就业市场,一份简历的细微差别可能决定面试机会的有无。越来越多求职者开始依赖智能化工具来打磨自己的“职业名片”——但你有没有想过,当你上传简历、点击“优化建议”后&#xff…

作者头像 李华
网站建设 2026/5/1 7:21:45

【GNSS定位】多系统 GNSS 伪距单点定位,从 RINEX 文件读取观测值 导航电文,解算卫星位置,通过最小二乘迭代求解接收机 ECEF 坐标,并分析定位误差附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码获取及仿真…

作者头像 李华