Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是;任何对象的默认初始化发生在程序的任何其他操作(默认写入除外)之前;什么意思?_Java_Java Memory Model - Fatal编程技术网

Java 什么是;任何对象的默认初始化发生在程序的任何其他操作(默认写入除外)之前;什么意思?

Java 什么是;任何对象的默认初始化发生在程序的任何其他操作(默认写入除外)之前;什么意思?,java,java-memory-model,Java,Java Memory Model,Java语言规范7,第17.4.5节: 5. The default initialization of any object happens-before any other actions (other than default-writes) of a program. 这到底是什么意思?什么是默认初始化?您能提供一些示例吗?默认初始化是将实例字段分配给 您引用的那一节告诉您,这种情况发生在调用构造函数之前。默认初始化是将实例字段分配给 您引用的那一节告诉您这种情况在调用构造函数之前发生

Java语言规范7,第17.4.5节:

5. The default initialization of any object happens-before any other
actions (other than default-writes) of a program.

这到底是什么意思?什么是默认初始化?您能提供一些示例吗?

默认初始化是将实例字段分配给


您引用的那一节告诉您,这种情况发生在调用构造函数之前。

默认初始化是将实例字段分配给


您引用的那一节告诉您这种情况在调用构造函数之前发生。

在调用构造函数之前发生是一个并发术语。从表面上看,它意味着你所想的,但它超越了这一点。对于非最终的、非易失性的字段,Java不保证通过跨线程同步字段值,除非建立了“先发生后发生”关系


规范的这一部分意味着访问对象的其他线程将看到默认的初始化值,即使您在构造函数中生成了线程

before是一个并发术语。从表面上看,它意味着你所想的,但它超越了这一点。对于非最终的、非易失性的字段,Java不保证通过跨线程同步字段值,除非建立了“先发生后发生”关系


规范的这一部分意味着访问对象的其他线程将看到默认的初始化值,即使您在构造函数中生成了线程

描述的哪部分不清楚?什么是默认初始化?描述的哪部分不清楚?什么是默认初始化?好的,看起来很简单。我认为这与
final
fields有关。就目前而言,我在JLS中没有看到该短语的明确定义。好吧,这看起来很简单。我认为这与
final
fields有关,但我在JLS中没有看到该短语的明确定义。