|
|
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. Может ли вывестись null? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:39 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questioner, В теории может, если handle будет вызван из другого потока, поэтому лучше поля для многопоточного использования всегда объявлять как final. На практике я бы и сам не отказался посмотреть на пример инициализированного в конструкторе поля класса, которое читается как null :-). Не уверен, что на x86 такое можно воспроизвести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 19:56 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questioner, Может ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 20:38 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 00:22 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
а если Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 00:25 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questioner, В таком виде нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 00:40 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
а volatile и final в конструкторе даёт нам таки одинаковые гарантии? то есть freeze action позволяет увидеть во всю глубину из volatile ссылки как минимум на момент завершения конструктора? В обычном же случае мы можем доверять только самой volatile ссылке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:22 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Запись в volatile создаст h-b барьер и не позволит записать адрес экземпляра Foo до этого присвоения в потоке в котором идет создание экземпляра. Но не более того. Гарантии на остаток цепочки конструкторов у наследника никто не предоставляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:28 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевЗапись в volatile создаст h-b барьер и не позволит записать адрес экземпляра Foo до этого присвоения в потоке в котором идет создание экземпляра. Но не более того. Гарантии на остаток цепочки конструкторов у наследника никто не предоставляет. Что Вы подразумеваете под цепочкой конструкторов? Вопрос вообще касается больше разницы final vs volatile в конструкторе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:44 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. тут я уверен, что выведется 1. а если так: Код: java 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:49 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questionerа volatile и final в конструкторе даёт нам таки одинаковые гарантии? Сходи в соседней ветке по ссылке, затем оттуда по ссылке в коментарии исходного кода. Особенно в тот, что под номером 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 10:39 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestionerа volatile и final в конструкторе даёт нам таки одинаковые гарантии? Сходи в соседней ветке по ссылке, затем оттуда по ссылке в коментарии исходного кода. Особенно в тот, что под номером 2. Так точно меня еще не посылали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 10:50 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questioner, Ну есть такие понятия в ООП - предок-наследник. Генеришь одно, а оно уже по цепочке вызывает кучу другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 10:55 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questionerВопрос вообще касается больше разницы final vs volatile в конструкторе Если я ничего не путаю, то в JMM есть отсылка на описание процесса создание объекта. Так там JVM на момент размещения объекта в памяти захватывает блокировку по ее отпусканию структуре памяти этого объекта уже отведено место. Соответственно есть барьер не позволяющий увидеть ссылку до того как место занято. Так получилось, что инициализация final полей попала внутрь этого процесса. Поэтому грань должна быть после того как они инициализированы по стандарту. Volatile само по себе создает h-b грань. Однако, как ты мог заметить из комментариев в коде, даже референсная JVM может поступать несколько по разному для разных платформ и видоизменять правила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 11:07 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевЕсли я ничего не путаю, то в JMM есть отсылка на описание процесса создание объекта. Так там JVM на момент размещения объекта в памяти захватывает блокировку по ее отпусканию структуре памяти этого объекта уже отведено место. Соответственно есть барьер не позволяющий увидеть ссылку до того как место занято. Так получилось, что инициализация final полей попала внутрь этого процесса. Поэтому грань должна быть после того как они инициализированы по стандарту. Volatile само по себе создает h-b грань. Однако, как ты мог заметить из комментариев в коде, даже референсная JVM может поступать несколько по разному для разных платформ и видоизменять правила. Судя по всему путаете. Есть два разных документа. 1. JMM . Там описано, что точно будет хорошо. Глава 9 содержит описание гарантий для final. 2. Руководство "как быстро напипать jvm и почти выполнить JMM". Именно "быстро" и "почти". Во-первых там описаны простые, но неоптимальные решения. Во-вторых там есть несколько ошибок (со слов Шипилёва на последнем joker). Поэтому эту книгу читать НЕЛЬЗЯ. Попытка понять, как будет что-то работать из кукбука приведёт к багам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 11:32 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Alexey TominЕсть два разных документа. 1. JMM . Там описано, что точно будет хорошо. Глава 9 содержит описание гарантий для final. Если мы заменим слово блокировка на "final field safe context" - этого будет достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 12:10 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Я вот задаю конкретные вопросы, а ответы уводят в сторону) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:06 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questionerЯ вот задаю конкретные вопросы, а ответы уводят в сторону) вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. вопрос: Есть ли гарантия, что выведется 1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:14 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questionerquestionerЯ вот задаю конкретные вопросы, а ответы уводят в сторону) вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. вопрос: Есть ли гарантия, что выведется 1 ? Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:17 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
quot Alexey Tomin, a так ведь есть, верно? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:24 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questioner, и так тоже нет (смотрю с подозрением на ваш ник) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:51 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questioner Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. для верного. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:54 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
questionerquot Alexey Tomin, a так ведь есть, верно? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 15:08 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Пиши questioner Код: java 1. 2. 3. 4. 5. 6. 7. 8. и жизнь станет проще. А если менять потом не хочешь - то тоже самое, то final, а не volatile. Хотя если тебя интересует как бы сделать иначе, чтоб пройтись по граблям и не словить - тогда читай сорцы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 15:12 |
|
||
|
Есть ли смысл помечать final приватное поле с точки зрения vidibility ?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestioner Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. для верного. :) Не уловил глубокой мысли из двух слов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39397325&tid=2123185]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 349ms |

| 0 / 0 |
