|
Не понимаю пример из книги
|
|||
---|---|---|---|
#18+
Здравствуйте, читаю Шилдта, главу про многопоточность, там есть пример на wait(), notify(). Хотел разобраться как они работают, а в итоге появилось ещё больше вопросов. Сам пример из книги: Код: 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.
Обьясните, пожалуйста, на пальцах, как это всё работает. Мы от Producer заходим в put и тут же вызываем wait. По идее поток Producer должен остановиться, судя из описания метода, но этого не происходит, почему? Из этого когда мне казалось, что оба потока так и зависнут на wait и будут ждать друг друга. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 14:38 |
|
Не понимаю пример из книги
|
|||
---|---|---|---|
#18+
сам-то пример пробовал для начала запустить, ну чтобы убедиться, что там все верно? у тебя ошибка в коде, либо опечатка в книжке - в методе put цикл while должен содержать только кусок try-catch, а не весь блок Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
тогда все правильно - т.к. valueSet == false, метод get входит в ожидание по wait, а вот put минуя wait устанавливает первое значение, и оповещает через notify get, а сам на следующей итерации переходит в свою очередь в wait, пока не получит notify от get ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 15:18 |
|
Не понимаю пример из книги
|
|||
---|---|---|---|
#18+
chpasha сам-то пример пробовал для начала запустить, ну чтобы убедиться, что там все верно? у тебя ошибка в коде, либо опечатка в книжке - в методе put цикл while должен содержать только кусок try-catch, а не весь блок ПК сейчас нет под рукой, поэтому не было возможности запустить код. Теперь стало более менее ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 15:32 |
|
|
start [/forum/topic.php?fid=59&tid=2120831]: |
0ms |
get settings: |
7ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
34ms |
get topic data: |
4ms |
get forum data: |
1ms |
get page messages: |
67ms |
get tp. blocked users: |
0ms |
others: | 293ms |
total: | 413ms |
0 / 0 |