|
|
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01, SparkSafe? Код: java 1. 2. 3. 4. 5. 6. 7. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:14:24 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
cdtyjv, 17.4.5. Happens-before Order If x and y are actions of the same thread and x comes before y in program order, then hb(x, y). If an action x synchronizes-with a following action y, then we also have hb(x, y). любой последующий setText будет Hb с предыдущим Ну и плюс thread.start конечно же обеспечит Свеном признайся что ты ничерта про это не знал и побырому заботал после того как я тебе об этом сказал и теперь вот включил это в программу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:28:20 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01cdtyjv, 17.4.5. Happens-before Order If x and y are actions of the same thread and x comes before y in program order, then hb(x, y). If an action x synchronizes-with a following action y, then we also have hb(x, y). любой последующий setText будет Hb с предыдущим Ну и плюс thread.start конечно же обеспечит Свеном признайся что ты ничерта про это не знал и побырому заботал после того как я тебе об этом сказал и теперь вот включил это в программу :) Подскажите, зачем вызывать метод start(String text), который в свою очередь, вызовет метод start() класса Thread в разных потоках ? Когда из документации: JDKpublic void start() It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution. То есть метод ВООБЩЕ НЕЛЬЗЯ вызывать 2 раза, но Вы предлагаете не просто вызвать его 2 раза, а еще и в разных потоках. И потом рассказываете, что все будет нормально, из-за синхронизации. Очень смешно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:50:46 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
HoBTIDbuldozer01cdtyjv, 17.4.5. Happens-before Order If x and y are actions of the same thread and x comes before y in program order, then hb(x, y). If an action x synchronizes-with a following action y, then we also have hb(x, y). любой последующий setText будет Hb с предыдущим Ну и плюс thread.start конечно же обеспечит Свеном признайся что ты ничерта про это не знал и побырому заботал после того как я тебе об этом сказал и теперь вот включил это в программу :) Подскажите, зачем вызывать метод start(String text), который в свою очередь, вызовет метод start() класса Thread в разных потоках ? Когда из документации: JDKpublic void start() It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution. То есть метод ВООБЩЕ НЕЛЬЗЯ вызывать 2 раза, но Вы предлагаете не просто вызвать его 2 раза, а еще и в разных потоках. И потом рассказываете, что все будет нормально, из-за синхронизации. Очень смешно Ай ай там же внутри еще и поток стартуют сразу же. НЕ заметил каюсь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:57:05 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01Ай ай там же внутри еще и поток стартуют сразу же. НЕ заметил каюсь :) Все ошибаются, просто лучше объяснять, а не тыкать носом в ошибки :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:31:45 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
HoBTIDbuldozer01Ай ай там же внутри еще и поток стартуют сразу же. НЕ заметил каюсь :) Все ошибаются, просто лучше объяснять, а не тыкать носом в ошибки :-) Ну моя ошибка то чисто номинальная syncronized таки обеспечит hb читаем спеку. А вот мсье Свеном боюсь даже не знал про то что слово final надо писать когда инициализируешь конструктор в многопотчном окружении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:46:28 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01НЕ заметил каюсь :)Бывает. Такое часто случается с людьми, которые вместо того, что бы вести конструктивный разговор, начинают переходить на личности. Ну да ладно, надеюсь, все ваши вопросы теперь сняты. Если нет - с радостью помогу вам разобраться, пишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:46:51 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
cdtyjv, Свеном ты продолжаешь Pr войну а я тебе пытаюсь пояснить что моей ошибки по большому счету нет. Я лишь говорил про связь syncrhonized И hb не вдаваясь в то что конкретно написано в setText. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:50:37 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01Ну моя ошибка то чисто номинальная syncronized таки обеспечит hb читаем спеку. А вот мсье Свеном боюсь даже не знал про то что слово final надо писать когда инициализируешь конструктор в многопотчном окружении.Нет, не можете вы все таки успокоиться. Постараюсь разжевать. В рассматриваемом случае synchronized не обеспечивает happens-before. Почему? Да потому, что что бы было HB, необходимо иметь минимум два участка кода, участвующих в HB. JLS нам говорит, что в HB устанавливается между двумя входами в критическую секцию, защищенную одним и тем же монитором. А в рассматриваемом примере мы вызовем start() один и только один раз . Следовательно, в synchronized секцию мы так же войдем только один раз. А следовательно, никакого HB там не будет, ибо его просто напросто не с чем устанавливать. Поэтому, использование synchronized в том месте является ошибочным, и если его убрать, то ничего в коде не изменится. Такой код, как вы выражаетесь, "не прошел бы code review" у меня. А у вас в конторе он бы прошел? Наконец, с final вам уже давным давно объяснили, что Thread.start() устанавливает synchronized-with соотношение (а следовательно, и HB) между Thread.start() и первой операцией в созданном потоке. А следовательно, в примере автора, где он руками запускает поток, использование final не является обязательным, ибо там нет проблем с небезопасной публикацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:52:55 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01Я лишь говорил про связь syncrhonized И hb не вдаваясь в то что конкретно написано в setText.Ну спасибо, что вы это мне сказали. Вопрос только - зачем? Что вам побудило взять некорректный код, и рассказывать мне про HB там, где его нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:53:57 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
cdtyjv, Все тушу свет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:54:19 |
|
||
|
Поток или метод
|
|||
|---|---|---|---|
|
#18+
buldozer01cdtyjv, Все тушу светДавайте так - если у вас есть, что сказать по делу, то говорите. Если нет - то давайте оставим этот разговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:55:32 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2128513]: |
0ms |
get settings: |
17ms |
get forum list: |
24ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
17ms |
get first new msg: |
9ms |
get forum data: |
5ms |
get page messages: |
85ms |
get tp. blocked users: |
3ms |
| others: | 322ms |
| total: | 537ms |

| 0 / 0 |
