Вы правы.И начиная с Java 8, вы также можете не указывать final
, поскольку в Java 8 реализована концепция «эффективно финальной», которая применяется, если вы не изменяете переменную после инициализации.
Как JLS определяет :
Вызов start()
в потоке происходит до любых действий в запущенном потоке.
И, как правило, о том, что происходит доотношения, это говорит:
Два действия могут быть упорядочены отношениями до того, как это произойдет.Если одно действие происходит раньше другого, то первое видно и упорядочено перед вторым.
Все, что произошло до вызова start()
, гарантированно будет видно внутри вашей задачи Runnable
.