2013-10-01 2 views
0

Java Язык 17.4.5:Что означает «Инициализация по умолчанию любого объекта происходит до того, как« какие-либо другие действия (отличные от по умолчанию-записи) »означают? Спецификация 7, раздел

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

Что это означает в точности? Что такое инициализация по умолчанию? Можете ли вы привести несколько примеров?

+3

Какая часть этого описания не ясна? – yan

+0

Что такое инициализация по умолчанию? – ZhekaKozlov

ответ

1

По умолчанию инициализации процесс присвоения полей экземпляра, чтобы their respective default values.

В этом разделе вы цитируемый говорит вам, что это происходит, прежде чем, например, конструктор вызывается.

+0

Хорошо, это очень легко. Я думал, что это что-то связано с полями 'final' – ZhekaKozlov

+0

Интересно, я не вижу явного определения фразы в JLS. –

2

Happens-before - это термин для совместной работы. По номиналу это означает то, что вы думаете, но оно выходит за рамки этого. Для нефинансовых, энергонезависимых полей Java не гарантирует, что значения полей будут синхронизированы по потокам, если только что-то не установит отношения, которые произойдут раньше.

Эта часть спецификации означает, что другие потоки, обращающиеся к объекту, будут видеть значения инициализации по умолчанию, даже если вы создаете поток в конструкторе.

+0

Хорошо сказано. +1 - –

Смежные вопросы