|
|
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
Как тут достигается потокобезопастность при получении Point? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:06 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
public static Point getInstance() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:08 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174, JVM даёт гарантии на потокобезопасность при загрузке и инициализации классов. Внутренний PointHolder позволяет реализовать отложеную инициализацию. final, кстати, потерялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:10 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, как-то непонятно, а что произошло бы без отложенной инициализации? например так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:20 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174, Опять забываешь final. Без отложенной инициализации экземпляр бы создался всегда, даже если приложению он не нужен. Отложенная позволяет создать только по требованию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:26 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174как-то непонятно, а что произошло бы без отложенной инициализации? например так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. В этом случае синглтон инициализируется при любом первом упоминании класса Point. А при сипользовании PointHolder синглтон инициализируется только при обращенни к PointHolder, который нужен только для того чтобы получить instance. Т.е. инициализация происходит при первом обращении к экземпляру синглтона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:29 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz , Сергей Арсеньев , Что-то у меня ощущение, что и без final все будет работать корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 11:34 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
извините, конечно за такие вопросы... ) давайте сначала забудем про многопоточность и разберемся зачем там нужен final для instance? instance - это статик поле, разве оно будет инициализироваться более одного раза для класса? вы говорите, что Blazkowiczсинглтон инициализируется при любом первом упоминании класса PointСергей АрсеньевБез отложенной инициализации экземпляр бы создался всегда, даже если приложению он не нужен. как я понял из ваших слов, каждый раз при упоминании класса поинт будет создаваться экземпляр? след-ее это не подверждает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. получим авторStage [counter=1] сингльтон же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 11:49 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
DEVcoach Blazkowicz , Сергей Арсеньев , Что-то у меня ощущение, что и без final все будет работать корректно. Гы. Я даже знаю ситуации когда с final будет работать некорректно. Но при статическом анализе в IDE будет проще понять, почему instace нельзя менять. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 12:06 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевЯ даже знаю ситуации когда с final будет работать некорректно. Правда в этом случае и static наверное уже достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 12:10 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
DEVcoach Blazkowicz , Сергей Арсеньев , Что-то у меня ощущение, что и без final все будет работать корректно. Это не важно. Можно исходить из той предпосылки final сразу даёт понять что это immutable ссылка. А если оно не final, то при чтении кода, задешь себе вопросы - "а почему"? "а потому что есть сценарии его поменять или автор просто леняй. А возможно экономит драгоценные байты исходного кода?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 12:21 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174а забудем про многопоточность и разберемся зачем там нужен final для instance? Не будем ни о чем забывать. - Потому что final сразу показывает при чтении что это единственный экземпляр и его нельзя поменять. То есть ключевое слово тупо здесь уменьшается единственную надежную метрику качества кода - WTF per minute. - Потому что final в JMM даёт дополнительные гарантии и при чтении значение из поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 12:23 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174как я понял из ваших слов, каждый раз при упоминании класса поинт будет создаваться экземпляр? Можно цитату где я писал про "каждый"? Разница в отложенности, вот в таком коде Код: java 1. Нам экземпляр синглтона здесь нафиг не нужен. Но без внутреннего Holder-а он будет создани при инициализации класса Point. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 12:26 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczrema174а забудем про многопоточность и разберемся зачем там нужен final для instance?- Потому что final сразу показывает при чтении что это единственный экземпляр и его нельзя поменять. ну чтож, логично. по сути, получаемый инстанс - финал. Blazkowicz Код: java 1. Нам экземпляр синглтона здесь нафиг не нужен. Но без внутреннего Holder-а он будет создани при инициализации класса Point. вы уверены, что "без внутреннего Holder-а он будет создан при инициализации класса"? т.к. выполнение этой строки не приводит к созданию объекта (экземпляра) синглтона, т.к. конструктор не срабатывает в классе показанном тут 16805165 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 12:58 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174, Point.class - плохой пример. Похоже, что ссылка на метаданные класса не инициализирует класс. Нужно другое применение класса. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 13:14 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, JLS12.4.1. When Initialization Occurs A class or interface type T will be initialized immediately before the first occurrence of any one of the following: T is a class and an instance of T is created. T is a class and a static method declared by T is invoked. A static field declared by T is assigned. A static field declared by T is used and the field is not a constant variable (§4.12.4). T is a top level class (§7.6), and an assert statement (§14.10) lexically nested within T (§8.1.3) is executed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 13:22 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174, Вам про Фому, Вы про Ерёму: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 13:34 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
ок, с отложенной инициализацией разобрались как теперь связать это BlazkowiczJVM даёт гарантии на потокобезопасность при загрузке и инициализации классови отложенную инициализацию? какая связь между потокобезопастностью и отложенной ин-й не вьеду... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 13:39 |
|
||
|
Как достигется потокобезопастность?
|
|||
|---|---|---|---|
|
#18+
rema174как теперь связать это BlazkowiczJVM даёт гарантии на потокобезопасность при загрузке и инициализации классови отложенную инициализацию? какая связь между потокобезопастностью и отложенной ин-й не вьеду... Никак. Если отложеная инициализация не нужна, то и Holder не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 13:41 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2126322]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 449ms |

| 0 / 0 |
