|
|
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Привет. Программа выводит пинг понг пинг понг... и использует для этого два потока.(Эмуляция настольного тенниса) Код: 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. 40. 41. Подскажите, пожалуйста, если здесь ошибки с точки зрения потоко безопасности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 15:13 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtus, оно зависать должно, т.к. при steps==0 один тред просто завершается, а второй так и висит на ожидании notify. PS что за извращенцы придумывают такую хрень :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 15:41 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Вы хотели спросить есть ли в данных ошибках немного кода? :) Подсказка номер 1 - потоки шарят между собой не только valueно и steps ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 15:59 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
А у кого мячик сначала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 15:59 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
DDiver, спасибо. сделал так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:13 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Мой вопрос повис в воздухе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:16 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
забыл ник, уважаемый, steps - это переменная объекта. Можете, поконкретней, пожалуйста, если вы видите ошибку и хотите помочь. Или поправьте меня если я ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:16 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mayton, так у треда 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:16 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtus, "если" и "есть ли" это не синонимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:18 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtusmayton, так у треда 1 Да ладно. Где это описано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:21 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mayton, стартует первым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:22 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtus, Доступ к steps не синхронизирован. obj не final wait не обезопасен от ложных либо неожиданных пробуждений. http://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:23 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtusmayton, стартует первым. Не гарантировано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:23 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Ого... звучит убедительно. Стартует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:26 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, mayton все понял, спасибо большое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:27 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtus, volatile не нужно, т.к. есть synchronized (obj) steps не шарится между потоками, поэтому и не синхронизирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:28 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
0FD, ну вот я тоже про степс так не понял, зачем её синхронизировать в данном листинге ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:29 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а можете, пожалуйста, пояснить, зачем Object final делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:30 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Интересно создать 4-х игроков и заставить их инстнциироваться с одним мячиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:31 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
Blazkowiczmr_virtus, Доступ к steps не синхронизирован. obj не final steps у ТС локальная переменная, у каждого своя, или я ошибаюсь? а зачем делать obj final? только защититься от случайного изменения объекта синхронизации, или есть необходимость? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:33 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
0FDsteps не шарится между потоками, поэтому и не синхронизирован. Гениальный coding convention который рекомендует прятать instance поле между static полями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:35 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
DDiversteps у ТС локальная переменная, у каждого своя, или я ошибаюсь? Поле экземпляра и локальная переменная не одно и тоже. Кодер смело впихнул поле между статиков, поэтому при беглом чтении не очевидно что это не static. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:36 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
mr_virtus, в принципе, не вдаваясь в код, ситуация, когда wait идет после notify, чревата дедлоками: остануться потоки в ждущем состоянии, которых некому будет оповестить. Да и бессмысленно. Обычно наоборот: - ждут какого-то условия в цикле - выполняют работу - оповещают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:39 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
ivanra, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 16:48 |
|
||
|
Если в данном коде ошибки с точки зрения потокобезопасности
|
|||
|---|---|---|---|
|
#18+
DDiverтолько защититься от случайного изменения объекта синхронизации, или есть необходимость? Необходимости помогать тому, кто будет разбираться в коде (в т.ч. оптимизатору) нет. Ну и кроме того - да действительно, как это красиво пишут на англицком языке - Updating final static fields will be slightly more complicated. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 17:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38888557&tid=2125752]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 536ms |

| 0 / 0 |
