news 2026/1/28 13:14:31

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/1/26 7:52:28

多语言翻译服务质量保障:通信无国界的基石

多语言翻译服务质量保障:通信无国界的基石 在全球化浪潮席卷各行各业的今天,企业跨国协作、科研机构联合攻关、用户跨语言社交已成常态。然而,语言鸿沟依然是信息流通的隐形壁垒。尽管深度学习驱动的神经机器翻译(NMT)…

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

跨区域数据同步加速:全球化业务的底层支撑

跨区域数据同步加速:全球化业务的底层支撑 在当今全球化的数字生态中,用户对服务响应速度的容忍度正变得越来越低。无论是欧洲消费者在午夜下单购物、东南亚用户与语音助手对话,还是美洲金融机构进行实时反欺诈决策,他们都不希望因…

作者头像 李华
网站建设 2026/1/14 18:34:05

植物养护提醒机器人:阳台绿植不再轻易枯萎

植物养护提醒机器人:阳台绿植不再轻易枯萎 在城市生活的方寸阳台上,一盆绿植往往承载着人们对自然的向往。然而,工作繁忙、出差频繁,常常让人忘记浇水、忽视光照——再顽强的生命也扛不住长期疏于照料。于是,我们开始思…

作者头像 李华
网站建设 2026/1/26 20:31:32

商标近似度判断AI:品牌维权的新手段

商标近似度判断AI:品牌维权的新手段 在电商平台每秒新增成千上万商品的今天,一个伪造的“耐克勾”图标可能正悄然出现在某个冷门店铺中。传统靠人工审核来识别这些细微差别的做法早已不堪重负——不仅响应慢,还极易遗漏。而当侵权行为变得越来…

作者头像 李华
网站建设 2026/1/26 19:19:41

基于51单片机的步进电机调速系统设计

基于51单片机的步进电机调速系统 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.按键可以控制电机正、反转,加、减速,停止; 2.一位7段数码管实时显示档位&#xf…

作者头像 李华