|
|
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Возьмём ArrayBlockingQueue и LinkedBlockingQueue. Самая важная разница в контексте моего вопроса в том, что первая очередь ограниченная. ArrayBlockingQueue конструктор имеет параметр fair. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. и тут есть параметр fair, который имеет тот же смыл, что и в ReentrantLock Я так понимаю он имеет смысл в двух случаях. 1. Допустим мы сейчас добавляем элемент в очередь и пока мы это делаем прилетело ещё 2 элемента на добавление, и тут на второе место в очереди может попасть как первый, так и второй из конкурирующих потоков в очереди. 2. В случае переполнения очереди потоки выстраиваются либо в очередь(в случае fair) либо порядок захвата очереди неопределен Судя по имплементации LinkedBlockingQueue тут есть такая же проблема: Код: 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. Теперь собственно о вопросе: В concurrency in practice написано следующее: poison pill техника почему-то будет работать только на неограниченных очередях. Я не понял почему. Также я не понял как использовать эту технику когда много consumer-ов и producer-ов Пример использования этой техники из книги: Код: 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. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:07 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerpoison pill техника почему-то будет работать только на неограниченных очередях. Я не понял почему. По-моему у тебя опять трудности перевода. Приводил бы что ли оригинальные цитаты. Ну, и проблема с использованием poison pill в bounded queue в том что очередь может быть заполнена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:20 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerТакже я не понял как использовать эту технику когда много consumer-ов и producer-ов Конкретизируй что именно не понятно? Очередь же одна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:22 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerpoison pill техника почему-то будет работать только на неограниченных очередях. Я не понял почему. По-моему у тебя опять трудности перевода. Приводил бы что ли оригинальные цитаты. Ну, и проблема с использованием poison pill в bounded queue в том что очередь может быть заполнена. А чем нам мешает тот факт, что она заполнена? по поводу цитаты: авторPoison pills work reliably only with unbound queues. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:28 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerТакже я не понял как использовать эту технику когда много consumer-ов и producer-ов Конкретизируй что именно не понятно? Очередь же одна. когда один consumer и один producer producer шлёт ядовитое сообщение в очередь. как только consumer его получил - закрываем лавочку. когда много producer-ов и один consumer Каждый producer шлёт ядовитое сообщение в очередь. как только consumer получил сообщение столько, сколько producer-ов - закрываем лавочку. как быть если много producer-ов и consumer -ов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:35 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Очепятка авторКаждый producer шлёт ядовитое сообщение в очередь. как только consumer получил сообщение столько, сколько producer-ов - закрываем лавочку. Каждый producer шлёт ядовитое сообщение в очередь. как только consumer получил сообщений столько, сколько producer-ов - закрываем лавочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerА чем нам мешает тот факт, что она заполнена? Тем что в ней нет места для poison pill. questionerавторPoison pills work reliably only with unbound queues. Вот именно reliably ты из своего перевода почему-то выкинул. Речь, ведь, не о том что не будет работать совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:40 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerкак быть если много producer-ов и consumer -ов ? Считаешь и тех и других. Последний разгребатель разгребает все. Остальные перед уходом возвращают пилюлю в очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:44 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerА чем нам мешает тот факт, что она заполнена? Тем что в ней нет места для poison pill. Места нет - заблокируемся ведь до появления этого самого места, когда consumer разгребется. BlazkowiczВот именно reliably ты из своего перевода почему-то выкинул. Речь, ведь, не о том что не будет работать совсем. Да, ок, я подразумевал, что должно корректно "всегда", а этого не обещают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:52 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestionerкак быть если много producer-ов и consumer -ов ? Считаешь и тех и других. Последний разгребатель разгребает все. Остальные перед уходом возвращают пилюлю в очередь. а как последний понимает, что он последний? Можно пример? пусть у нас 3 продюсера и 2 консумера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:55 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, questioner Места нет - заблокируемся ведь до появления этого самого места, когда consumer разгребется. Место появилось и сообщение таки в очередь проберется. и таки до консумера долетит. Если используем fair, то и даже в нужном порядке долетит. Хотят смотрю в LinkedBlockingQueue используется обычный не fair ReentrantLock и там даже не предлагают этот параметр выставлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:58 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerМеста нет - заблокируемся ведь до появления этого самого места, когда consumer разгребется. В приведенном коде он отваливал по первой пилюле. А хвост никто не разгребал. Могло оказаться так, что хвост бы оставался. Как ты заметил нужен счетчик пилюль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 16:59 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевquestionerМеста нет - заблокируемся ведь до появления этого самого места, когда consumer разгребется. В приведенном коде он отваливал по первой пилюле. А хвост никто не разгребал. Могло оказаться так, что хвост бы оставался. Как ты заметил нужен счетчик пилюль. пример для варианта, что один консумер и один продюсер, поэтому и не надо ничего разгребать. аааааа, кажется вкурил. Проблема в том, что несколько сигналов на остановку могут быть посланы разными потоками(хотя и одним тоже может)? первый сигнал обработается, консумер остановится, а если при добавлении второго он заблочится, то он так и останется висеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 17:03 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Задача в общем то проста. В очереди посылается сигнал о том, что надо отвалится. Разгребатель отваливает. Если очередь не ограничена, то все уходят и оставляют мусор в очереди. Если очередь ограничена, то может сложиться ситуация, что разгребатель отвалил, а желающих набросать мусор еще навалом (ну их больше одного). Но мусорный бак переполнен. И все они будут ждать, пока разгребатель вернется, а он этого никогда не сделает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 17:28 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевЗадача в общем то проста. В очереди посылается сигнал о том, что надо отвалится. Разгребатель отваливает. Если очередь не ограничена, то все уходят и оставляют мусор в очереди. Если очередь ограничена, то может сложиться ситуация, что разгребатель отвалил, а желающих набросать мусор еще навалом (ну их больше одного). Но мусорный бак переполнен. И все они будут ждать, пока разгребатель вернется, а он этого никогда не сделает. В примере из книги если у нас много загребателей и всего один разгребатель, то каждый загребатель шлёт сигнал и наш любимый разгребатель считает количество этих сигналов. Как только количество сигналов равно количеству загребателей, разгребатель может угомониться. Но это не очень похоже на Ваш вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 18:05 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
в книге пишут, чтобы каждый продюсер положил в очередь столько ядовитых сообщение сколько у нас разгребателей. Но детали не уточнены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 18:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я подумал, может я что-то очевидное не понимаю. написал небольшой тестик: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. выводит авторput 1 Took 1 put 2 Не понятно в чем проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 18:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerв книге пишут, чтобы каждый продюсер положил в очередь столько ядовитых сообщение сколько у нас разгребателей. Но детали не уточнены Ну это следующий шаг. Но положим, что загребателей 101, а разгребателей 10. Это означает, что появится желание накидать 1010 пилюль. если случится гонка, то между ними влезут и не пилюли. А тпеперь финт ушами. Все разгребатели съели пилюли от первого загребателя. Вопрос сможет ли последний загребатель накидать все пилюли в очередь на 1000 элементов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 19:23 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, Проблем как раз таки нет, queue.put(2) ждет когда освободится место в очереди (1) для вставки, а это происходит после queue.take(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 20:38 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
no56892, ну дак и я про то же. как по мне это не отличается от того, что в книге написано, но видимо Goetz что-то другое думал, когда писал этот пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 22:25 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestionerв книге пишут, чтобы каждый продюсер положил в очередь столько ядовитых сообщение сколько у нас разгребателей. Но детали не уточнены Ну это следующий шаг. Но положим, что загребателей 101, а разгребателей 10. Это означает, что появится желание накидать 1010 пилюль. если случится гонка, то между ними влезут и не пилюли. А тпеперь финт ушами. Все разгребатели съели пилюли от первого загребателя. Вопрос сможет ли последний загребатель накидать все пилюли в очередь на 1000 элементов? не сможет... но это Вы к чему, я не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 22:27 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
к тому же там не написано, что этот подход не работает, только для варианта когда разгребателей много. В самом простом случае 1 загребатель и 1 разгребатель на какой очереди тут будет проблема? ну может на 2 загребателях, если на одном ни как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 22:41 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
На самом деле использования терминирующей таблетки очевидно недостаток дизайна система. В рабочих системах используется для этого модель не производитель/потребитель, а издатель/подписчик. Достаточно опубликовать одно сообщение чтоб группа подписчиков свернула свою потребительскую деятельность. Раздовать каждому по таблетке это ГОСПЛАН какой-то если кто помнит как это было в эпоху развитого социализма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 23:00 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerне сможет... но это Вы к чему, я не понял. К вопросу чем может помешать конечность очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 09:32 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
SergunkaДостаточно опубликовать одно сообщение чтоб группа подписчиков свернула свою потребительскую деятельность. Вы шину то с очередью не путаете? Из очереди может прочитать только один. Соответственно надо гарантировать, что прочтут все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 09:44 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerВ самом простом случае 1 загребатель и 1 разгребатель на какой очереди тут будет проблема? Да на таком вырожденном случае и без очереди проблем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 09:45 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestionerне сможет... но это Вы к чему, я не понял. К вопросу чем может помешать конечность очереди. Но это только если разгребателей много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 10:29 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, Как впрочем и писателей. Если они успеют накидать после пилюли кучу сообщений, то очередь может встать, а значит и может встать и часть писателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 10:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, То есть проблем не будет при соотношениях: 1-1 1-М М-1 Для М-М работать на ограниченных очередях не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:00 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, проблемы будут, например, если в очередь не смогут записаться все писатели. Пусть у нас 1000 писателей, один читатель и очередь длиной 1000. В силу каких-то IO задержек или по вине шедулера читатель заснул. В это время писатели забили очередь. 999 повисли с попыткой записать что-нибудь. Начался shutdown. 1000-й писатель повис на отпавке пилюли. -- честные жители засыпают просыпается мафия --- Проснулся наконец читатель. Выгреб 1000 сообщений. Очередь оказалась следка не fair и пилюля обогнала 999 других сообщений. По мере разгребания пришли в себя писатели и попытались накидали 999 пилюль. Пока зависли - в очереди 1000 сообщений из которых первая пилюля. Один писатель отвалил. Если читатель отвалит по первой пилюле то, еще один писатель отвалит. А 998 останутся ждать разгребания очереди. Поэтому модели одной пилюли маловато, надо вводить счетчик. и т.п. и т.д. И это еще без варианта, что в процессе shutdown писатель может накидать несколько сообщений. Ну или неограниченную очередь или честную (что по сути почти тоже самое - ибо все одно надо хранить порядок кто за кем за пределами capacity) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Ну или неограниченную очередь или честную (что по сути почти тоже самое - ибо все одно надо хранить порядок кто за кем за пределами capacity) :) Я думал над этим и думаю, что неограниченная очередь не fair. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В один момент времени может добавляться только один элемент, в этот момент могут прилететь 2 новые задачи(одна раньше, другая позже) и тут кто их них раньше попадёт в очередь - непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевПока зависли - в очереди 1000 сообщений из которых первая пилюля. Один писатель отвалил. Если читатель отвалит по первой пилюле то, еще один писатель отвалит. А 998 останутся ждать разгребания очереди. Поэтому модели одной пилюли маловато, надо вводить счетчик. и т.п. и т.д. И это еще без варианта, что в процессе shutdown писатель может накидать несколько сообщений. Вот тут непонятно. Что значит "отвалит"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:45 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerЧто значит "отвалит"? Уйдет на покой - т.е. сделает то, что от него требуется при shutdown. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 13:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевquestionerЧто значит "отвалит"? Уйдет на покой - т.е. сделает то, что от него требуется при shutdown. Ну дак а в случае если contention на вставку в очередь будет, то такая же история приключится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 13:25 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Об том и речь, что приходится считать сколько читателей, в зависимости от количества читателей и писателей делать длину очереди и пр. И все ради возможности отвалить не по таймауту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:26 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, так а ограниченность очереди то тут каким боком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:54 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, В нее должны гарантированно поместится все пилюли и прочее что может накопиться между ними. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 16:20 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestioner, В нее должны гарантированно поместится все пилюли и прочее что может накопиться между ними. Это будет проблемой только для М-М? в других случаях нам же не надо ничего нового в очередь добавлять, просто потихоньку съедаем пилюли и считаем их ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 17:11 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевSergunkaДостаточно опубликовать одно сообщение чтоб группа подписчиков свернула свою потребительскую деятельность. Вы шину то с очередью не путаете? Из очереди может прочитать только один. Соответственно надо гарантировать, что прочтут все. Читайте внимательно и не обрезайте чужие сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 07:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
SergunkaЧитайте внимательно и не обрезайте чужие сообщения. И чем Вас не устроил ответ, что у этих подходов разные назначения? Очередь нужна для сериализации сообщений и доставки каждого из них до одного обработчика. Для этих задач шина (публикатор-подписчик) мягко говоря не подходит. Грубо говоря когда надо списать 100 рублей, никого не интересует, чтоб это бросились делать все клерки банка одновременно, но нужно сделать так, чтоб один свободный это сделал. Как впрочем и оповещать о пожаре через такую систему глупо - здесь нужен один матюгальник, который слушают все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 18:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestioner, проблемы будут, например, если в очередь не смогут записаться все писатели. Пусть у нас 1000 писателей, один читатель и очередь длиной 1000. В силу каких-то IO задержек или по вине шедулера читатель заснул. В это время писатели забили очередь. 999 повисли с попыткой записать что-нибудь. Начался shutdown. 1000-й писатель повис на отпавке пилюли. -- честные жители засыпают просыпается мафия --- Проснулся наконец читатель. Выгреб 1000 сообщений. Очередь оказалась следка не fair и пилюля обогнала 999 других сообщений. По мере разгребания пришли в себя писатели и попытались накидали 999 пилюль. Пока зависли - в очереди 1000 сообщений из которых первая пилюля. Один писатель отвалил. Если читатель отвалит по первой пилюле то, еще один писатель отвалит. А 998 останутся ждать разгребания очереди. Поэтому модели одной пилюли маловато, надо вводить счетчик. и т.п. и т.д. И это еще без варианта, что в процессе shutdown писатель может накидать несколько сообщений. Ну или неограниченную очередь или честную (что по сути почти тоже самое - ибо все одно надо хранить порядок кто за кем за пределами capacity) :) Я тут залез в сорцы ThreadPoolExecutor. В очередь сообщения добавляются только через offer, что значит, что сообщение либо сразу добавится(вернётся true), либо не добавится и вернется false. То есть продюсеры висеть не будут. Или Вы про contention ожидание писали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 18:32 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerЯ тут залез в сорцы ThreadPoolExecutor. В очередь сообщения добавляются только через offer, что значит, что сообщение либо сразу добавится(вернётся true), либо не добавится и вернется false. То есть продюсеры висеть не будут. Какие-то у тебя сильно далеко идущие выводы. Про то что внутри executor-а есть очередь со своим поведением, про это в сырцах не написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 18:53 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerЯ тут залез в сорцы ThreadPoolExecutor. В очередь сообщения добавляются только через offer, что значит, что сообщение либо сразу добавится(вернётся true), либо не добавится и вернется false. То есть продюсеры висеть не будут. Какие-то у тебя сильно далеко идущие выводы. Про то что внутри executor-а есть очередь со своим поведением, про это в сырцах не написано? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Вроде как ту, что передали - та и используется без каких-то оберток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:04 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, И по вот этому конструктору ты понял что метод offer не блокирующий? А заглянуть, например, в ArrayBlockingQueue.offer() не догадался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:32 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestioner, И по вот этому конструктору ты понял что метод offer не блокирующий? А заглянуть, например, в ArrayBlockingQueue.offer() не догадался? по этому конструктору я понял, что никаких манипуляций с очередь не делают, не оборачивают и всё такое BlockingQueue interface: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:35 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, А что Вы сказать то хотели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 12:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123112]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
102ms |
get tp. blocked users: |
2ms |
| others: | 196ms |
| total: | 406ms |

| 0 / 0 |
