"The default initialization of any object happens-before any other actions (other than default- writ



Java 语言规范 7,第 17.4.5 节:

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

这到底是什么意思?什么是默认初始化?你能举一些例子吗?

Happen before是一个并发术语。从表面上看,它意味着你的想法,但它超越了这一点。 对于非最终、非易失性字段,Java 不保证字段值将在线程之间同步,除非某些内容建立了发生前关系。

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

默认初始化是将实例的字段分配给其各自的默认值的过程。

您引用的那部分告诉您这发生在例如调用构造函数之前。

相关内容