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

时间:2013-10-01 16:37:33

标签: 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.

它究竟意味着什么?什么是默认初始化?你能提供一些例子吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

默认初始化是将实例的字段分配给their respective default values.

的过程

您引用的那个部分告诉您这种情况发生之前,例如,构造函数被调用。