|
|
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerSynchronized - всё в один поток и многопоточности нет тогда. Ну, при коллизии hash кодов у нас будет compute всегда synchronized. То есть распределение таски по очередям полностью синхронизировано. Разницы вот с этим кодом нет: Код: java 1. 2. 3. Согласен, но распределение это обычно маленькая часть от работы. Во многих случаях это нормально. А Вы можете предложить более производительный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:15 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerSynchronized - всё в один поток и многопоточности нет тогда. Ну, при коллизии hash кодов у нас будет compute всегда synchronized. То есть распределение таски по очередям полностью синхронизировано. Разницы вот с этим кодом нет: Код: java 1. 2. 3. Очень показательно, кстати - обсуждать какую-то высосанную из пальца несуществующую проблему и при этом без зазрения совести писать synchronized(this) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:18 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
А то что ThreadPoolImpl#stop() никак не влияет на уже засабмиченные таски и внутренний экзекутор, уже кто-нибудь здесь отписывал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:24 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei TОчень показательно, кстати - обсуждать какую-то высосанную из пальца несуществующую проблему и при этом без зазрения совести писать synchronized(this) Не читал но осуждаю? Перечитай ещё раз если ничего не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:27 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei TА то что ThreadPoolImpl#stop() никак не влияет на уже засабмиченные таски и внутренний экзекутор, уже кто-нибудь здесь отписывал? Да, мне тоже не нравится собственный флаг. Я бы пулу потоков его делегировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:31 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei TА то что ThreadPoolImpl#stop() никак не влияет на уже засабмиченные таски и внутренний экзекутор, уже кто-нибудь здесь отписывал? Да, у меня такой экзекутор, который просто прекращает новые таски принимать. Считаете, что надо таски на полпути прерывать? Такое тоже возможно, но зачем если это не часть задания? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Этого вообще в задании не было Andrei Очень показательно, кстати - обсуждать какую-то высосанную из пальца несуществующую проблему и при этом без зазрения совести писать synchronized(this) Показательно, что некоторые люди без зазрения совести могут оставить писать критичные сообщения на форуме даже если ни черта не понимают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:36 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questionerДа, у меня такой экзекутор, который просто прекращает новые таски принимать. Считаете, что надо таски на полпути прерывать? Ну, по-хорошему, если этого в задании нет, то можно было сделать параметром класса. shutdown() запущные задачи не прерывает. Но те что в очереди уже не будут выполнятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:41 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerДа, у меня такой экзекутор, который просто прекращает новые таски принимать. Считаете, что надо таски на полпути прерывать? Ну, по-хорошему, если этого в задании нет, то можно было сделать параметром класса. shutdown() запущные задачи не прерывает. Но те что в очереди уже не будут выполнятся. Можно, только зачем на это время тратить если никто не просил? я имел ввиду, что никто не делает interrupt тредам. Да, если бы сделал это, конечно, было бы больше похоже на jdk тредпул, но не считаю это проблемой. я вообще это сделал, чтобы приложение у меня заканчивало работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 17:49 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questionerAndrei TА то что ThreadPoolImpl#stop() никак не влияет на уже засабмиченные таски и внутренний экзекутор, уже кто-нибудь здесь отписывал? Да, у меня такой экзекутор, который просто прекращает новые таски принимать. Считаете, что надо таски на полпути прерывать? Такое тоже возможно, но зачем если это не часть задания? Не надо никого прерывать на полпути. Важно отменить накопившуюся очередь задач, которая в реальной системе может быть значительного размера. Иначе твой экзекутор будет продолжать выполнять ранее засабмиченные задачи еще продолжительное время после вызова stop(). questionerAndrei Очень показательно, кстати - обсуждать какую-то высосанную из пальца несуществующую проблему и при этом без зазрения совести писать synchronized(this) Показательно, что некоторые люди без зазрения совести могут оставить писать критичные сообщения на форуме даже если ни черта не понимают Ты какой-то нервный. Что конкретно, по-твоему, я не понимаю? Не то что бы мне было очень интересно, но раз уж нахамил, было бы логично продолжить мысль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:08 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAndrei TОчень показательно, кстати - обсуждать какую-то высосанную из пальца несуществующую проблему и при этом без зазрения совести писать synchronized(this) Не читал но осуждаю? Перечитай ещё раз если ничего не понял. Что в твоей писуле можно не понять? this - это ThreadPoolImpl из изначального поста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:09 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questionerBlazkowiczпропущено... Ну, по-хорошему, если этого в задании нет, то можно было сделать параметром класса. shutdown() запущные задачи не прерывает. Но те что в очереди уже не будут выполнятся. Можно, только зачем на это время тратить если никто не просил? я имел ввиду, что никто не делает interrupt тредам. Да, если бы сделал это, конечно, было бы больше похоже на jdk тредпул, но не считаю это проблемой. я вообще это сделал, чтобы приложение у меня заканчивало работу. Ты не считай, а сделай Thread.sleep(Integer.MAX_VALUE) в таске и проверь, как твое приложение закончит работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:10 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questionerМожно, только зачем на это время тратить если никто не просил? Ну, как это никто не просил. Флаг же зачем-то добавили? Значит нужен корректный шатдаун? questionerя имел ввиду, что никто не делает interrupt тредам. Это понятно. Interrupt будет только в shutdownNow(), в shutdown() его не будет. questionerя вообще это сделал, чтобы приложение у меня заканчивало работу. Ну, вот есть задача разработать очередь задачь. Она как бы и подразумевает что очередь должне уметь корректно завершаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:11 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei TЧто в твоей писуле можно не понять? this - это ThreadPoolImpl из изначального поста? Что это тебя писули забеспокоили? Это демонстрация поведения, а не код для использования. Но не только лишь все могут понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:12 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei TBlazkowiczпропущено... Не читал но осуждаю? Перечитай ещё раз если ничего не понял. Что в твоей писуле можно не понять? this - это ThreadPoolImpl из изначального поста? Код: java 1. 2. 3. Ок, объясню, попробую хотя бы. Мапа делится на сегменты. То есть сегмент это кусочек мапы. Так вот, в ConcurrentHashMap мутабельные операции для сегмента выполняются последовательно. Но важно понимать, что эта последовательная операция достаточно короткая. Сами таски выполняются в отдельных тредах. А невежливы к Вам потому, что Вы прилетели с бухты барахты, нихрена не разобрались и начали критиковать. Опять же, можете лучше предложить решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:29 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerМожно, только зачем на это время тратить если никто не просил? Ну, как это никто не просил. Флаг же зачем-то добавили? Значит нужен корректный шатдаун? questionerя имел ввиду, что никто не делает interrupt тредам. Это понятно. Interrupt будет только в shutdownNow(), в shutdown() его не будет. questionerя вообще это сделал, чтобы приложение у меня заканчивало работу. Ну, вот есть задача разработать очередь задачь. Она как бы и подразумевает что очередь должне уметь корректно завершаться. Ок, согласен, что не уделил этому аспекту большого внимания ибо посчитал его малозначащим в рамках этой задачи. Вопрос как корректно останавливать тредпул это всё же вопрос дискуссионный. в рамках этой задачи я посчитал, что задачи важны и нельзя заканчивать работу пока есть необработанные задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 18:34 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Вимба, тем временем, не пришел. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:00 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAndrei TЧто в твоей писуле можно не понять? Что это тебя писули забеспокоили? Ты так говоришь, как будто это что-то плохое. Код люди разной ориентации пишут, знаешь ли. В приличном обществе твой юмор бы не оценили. Но на отечественном форуме ты, конечно, просто записной остряк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:12 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questioner Код: java 1. 2. 3. 4. 5. 6. 7. 8. Вот кстати рабочий вариант ... Нерабочий. questioner в пул кидают(в основном) долгоиграющие таски, верно? А какая по твоему самая распространенная в нашем мире причина, по которой таска планировалась выполняться долго, но завершилась моментально сразу после своего запуска? Переписывай с на try/finally короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:23 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questionerAndrei Tпропущено... Что в твоей писуле можно не понять? this - это ThreadPoolImpl из изначального поста? Код: java 1. 2. 3. Ок, объясню, попробую хотя бы. Мапа делится на сегменты. То есть сегмент это кусочек мапы. Так вот, в ConcurrentHashMap мутабельные операции для сегмента выполняются последовательно. Но важно понимать, что эта последовательная операция достаточно короткая. Сами таски выполняются в отдельных тредах. Я, если честно, про твои сегменты и время операций даже не думал. synchronized(this) - это хорошо известный антипаттерн (в большинстве случаев). Обычно сходятся на том, что следует явно указывать модификатор synchronized в сигнатуре public метода. questionerА невежливы к Вам потому, что Вы прилетели с бухты барахты, нихрена не разобрались и начали критиковать. Опять же, можете лучше предложить решение? Я никуда не прилетал, это, на секундочку, общий форум, а не твой личный чат (хотя я не навязываюсь). Мне твое решение как раз изначально понравилось как компактное и элегантное, о чем я написал еще на первой странице (и там же - об еще одной баге, которую я изначально заметил). Также я тебе в другой твоей теме про экзекутор скидывал ссылку на свой код на гитхабе, который решает примерно те же задачи, что стоят перед тобой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:30 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
vimba, Ну допустим. там уже предложили вариант полаконичнее с whenCompleteAsync ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:32 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei T, Andrei TЯ, если честно, про твои сегменты и время операций даже не думал. synchronized(this) - это хорошо известный антипаттерн (в большинстве случаев). Обычно сходятся на том, что следует явно указывать модификатор synchronized в сигнатуре public метода. Вот мы и поняли, что не думал, а это очень важно. А взял и осудил) Вторую часть фразы я пожалуй не буду комментировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:35 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
vimba, Код: java 1. 2. 3. 4. 5. 6. 7. авторTask with exception Main thread Если имелось ввиду то, что whenComplete(Async) может не выполниться, то это не правда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:44 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. авторTask with exception Main thread Ну и так тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 19:46 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
Andrei TЯ, если честно, про твои сегменты и время операций даже не думал. synchronized(this) - это хорошо известный антипаттерн (в большинстве случаев). Обычно сходятся на том, что следует явно указывать модификатор synchronized в сигнатуре public метода. Пипец. Капитан очевидность не унимается. Тут вообще-то все в курсе как использовать synchronized. Это была иллюстрация того как будет работать код при коллизии хэшей. Термин "иллюстрация" объяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 20:45 |
|
||
|
Сказали, что выполнил тестовое задание неправильно, я с этим не согласен. Кто прав?
|
|||
|---|---|---|---|
|
#18+
questionerСогласен, но распределение это обычно маленькая часть от работы. Во многих случаях это нормально. А Вы можете предложить более производительный вариант? А "производительность" она в многопоточности штука относительная. Мы же не знаем ни на сколько конкурентной будет борьба за критические ресурсы, ни на сколько часто у будут пересекаться ключи. В зависимости от подобных параметров разные решения будут выдавать разную производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2017, 21:53 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39515239&tid=2122587]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 383ms |

| 0 / 0 |
