|
|
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Blazkowiczна сколько безопасно синхронизироваться на строковых константах и других публично доступных экземплярах? А что тут небезопасного? Blazkowicz- Почему для одного монитора целых 3 поля? не вижу трёх полей автор- Почему левая и правая нога - разные классы. У низ разная структура? Или разное поведение? сделал ради очевидности. разные классы, разные потоки. Blazkowicz- Почему одно поле final, а остальные - нет? На сколько это безопасно? какие остальные? Blazkowicz- Гарантирует ли Thread.sleep() ожидаемое поведение? нет, но я думаю если его убрать, то ничего не поменяется. Это я так...проверить, что ничего не поменяется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:08 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerто есть самый простой вариант создать какую-то третью сущность, доступ к которой будут иметь оба потока, засинхронизироваться по ней и менять ее состояние? Код: java 1. 2. и это написать в классе LeftRightWaitNotifyExample? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:09 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questionerА что тут небезопасного? Кто угодно внутри этой же JVM может захватить публичный монитор и ваши ноги останутся ни с чем. questionerне вижу трёх полей Код: java 1. 2. 3. 4. 5. 6. questionerсделал ради очевидности. разные классы, разные потоки. Даешь по классу на каждый объект! questionerкакие остальные? String monitor; questionerнет, но я думаю если его убрать, то ничего не поменяется. Это я так...проверить, что ничего не поменяется Тем не менее, никаких гарантий что один из этих потоков запустится первым - нет, пока нет явного состояния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:16 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questionerи это написать в классе LeftRightWaitNotifyExample? в классе Leg. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:16 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Кто угодно внутри этой же JVM может захватить публичный монитор и ваши ноги останутся ни с чем. вообще да авторДаешь по классу на каждый объект! ну так же всё таки более обший случай будет questionerнет, но я думаю если его убрать, то ничего не поменяется. Это я так...проверить, что ничего не поменяется Тем не менее, никаких гарантий что один из этих потоков запустится первым - нет, пока нет явного состояния.[/quot] А если есть состояние, то как это повлияет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:23 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questioner, BlazkowiczДаешь по классу на каждый объект! ну а если у нас нога с головой синхронизуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:29 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questionerА если есть состояние, то как это повлияет? Метод проверит состояние. Если надо ходить его ногой, то будет ходить. Если надо ходить другой ногой, то уснет. Без явного состояние первой может пойти любая нога в зависимости от погоды (железа, ОС, версий и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:31 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Что скажете про такой код? Код: 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. как филды спрятать я что-то не догадался, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 15:25 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
P.S. предполагается, что надо с левой ноги начинать движение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 15:26 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questionerЧто скажете про такой код? Да, всё тоже самое. final - не знаем, volatile - не слышали, копипаста - рулит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 15:35 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questioner, Код: 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. Для красоты вместо boolean можно было бы и Enum завести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 15:51 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, volatile слышали, но разве тут необходим он? ведь мы меняем булевую переменную только в synchronized секции. Мне казалось, что переменные по выходу из нее синхронизуются со здравым смыслом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 16:00 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questionerМне казалось... Assumption is the mother of all fuck ups. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 16:05 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. а почему логика такая? спим только если мы левая нога? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 16:07 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questionerа почему логика такая? спим только если мы левая нога? right это переменная а не константа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 16:09 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вы наверное в уме компилили, но у меня такой вот вывод авторRight Left Left Right Left Right Left Right Left Right Left .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 16:27 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Да. Метод криво с наскока написал. Так лучше? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 16:29 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, да, так лучше. а можете помочь смоделировать ситуацию, когда один поток поменял переменную в synchronized блоке, покинул этот блок , а другой поток начал читать эту перменную и прочитал старое значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 17:00 |
|
||
|
wait/notify
|
|||
|---|---|---|---|
|
#18+
questioner, вот так можно смоделировать: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2014, 12:40 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2127281]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 463ms |

| 0 / 0 |
