@jvmchat

Страница 1554 из 2890
Vyacheslav
17.06.2017
15:09:39
Тогда такой вопрос: как можно по хорошему этот момент обработать? Я хочу чтобы это логировалось в последнюю очередь

Сделать какую-то проверку на наличие запущенных потоков?

Daniel
17.06.2017
15:11:18
у тебя этот экзекьютор останавливаемый и выполнит роль семафора

логируй после

Google
Dmitriy
17.06.2017
16:33:43
на встрече людей с Дмитрием Медведевым
Это же победа студентов ИТМО, где Елизаров был.

Это же не "люди" с улицы были

Vyacheslav
17.06.2017
16:35:10
Может мне кто-нибудь пояснить как мы можем у Future забрать состояние для всех засабмиченных задач, даже если их там куча?

Daniel
17.06.2017
16:37:14
у фьючи никак, потому что это только одна задача

Vyacheslav
17.06.2017
16:37:51
А как это можно сделать тогда?

Daniel
17.06.2017
16:38:24
перефразируй для начала, я не въехал что нужно в итоге от кучи тасков

Vyacheslav
17.06.2017
16:42:16
Смотри, я сабмичу кучу заданий по обработке строк через ExecutorService. У меня есть второй метод: он принимает список строчек, которые вылетели с ошибкой в предыдущем коде. Что мне нужно - я хочу, чтобы этот второй метод дождался пока выполнятся куча заданий по обработке строк и только тогда начал выполняться.

Daniel
17.06.2017
16:43:30
давай на скалу перепишем, там это быстро делается из коробки ?

Daniel
17.06.2017
16:44:58
можно опять же два варианта, с блокировкой на каком либо ресурсе (семафор поднять) или асинхронно полностью (как это в java уж не знаю)

Vyacheslav
17.06.2017
16:45:04
собирай в лист, потом фолдом синхронно через .get()
Пардон, не понял про "фолдом синхронно". Это как?

Daniel
17.06.2017
16:45:11
а вот да, третий вариант, однопоточно)

Vyacheslav
17.06.2017
16:45:39
Google
Nick
17.06.2017
16:46:37
Daniel
17.06.2017
16:47:00
Я многопоточностью 2 дня разбираюсь, я ещё не понял как это всё работает)
о, свежий! отличный курс есть https://www.coursera.org/learn/parprog1

Есть вариант забить
Подтверди, Ник)

Vyacheslav
17.06.2017
16:48:25
Пока у меня есть лист future, в который я кладу таски, которые сабмичу через экзекьютор. А вот чо дальш делать хз. Foreach забирать каждый элемент из листа? А чо с ним дальше делать?

Подтверди, Ник)
Это не вариант. Я не для этого свой парсер писал, чтоб забить почти в конце)

о, свежий! отличный курс есть https://www.coursera.org/learn/parprog1
А курсера теперь вся платная или как?

Daniel
17.06.2017
16:52:31
курсы почти всегда бесплатны, платные специализации и сертификаты

Vyacheslav
17.06.2017
16:53:41
Хм, видать давно я там не был

Maks
17.06.2017
16:53:51
курсы почти всегда бесплатны, платные специализации и сертификаты
Не так давно искал интересные себе курсы, больше половины были платные даже для доступа к материалу

Но конечно может это просто так для меня выпало

Nick
17.06.2017
16:54:27
о, свежий! отличный курс есть https://www.coursera.org/learn/parprog1
Он ж старый, да и ещё и для любителей акцента ))

Там ж профессор этот - поляк?

Daniel
17.06.2017
16:55:47
Пока у меня есть лист future, в который я кладу таски, которые сабмичу через экзекьютор. А вот чо дальш делать хз. Foreach забирать каждый элемент из листа? А чо с ним дальше делать?
уродливый вариант - создаешь шарэбл каунтер, при создании фьючи инкримент, на коллбэке по окончанию декримент если 0 то сделать что нить еще

Он ж старый, да и ещё и для любителей акцента ))
я хз что там из нового Прокопец вроде с нормальным говором

Nick
17.06.2017
16:56:51
Точно, он. Неее, я слушал и плакал)

Хотя лучше он, чем андрюша нж

Daniel
17.06.2017
16:57:17
там 2ой мужик смешной, как будто француз

Nick
17.06.2017
16:58:29
Может швейцарец? На самом деле курс этот ну слабоват

Daniel
17.06.2017
17:04:47
хардкора нет, но как элементарный ок

Ivan
17.06.2017
17:27:03
Господа, кто может мне прояснить почему блок finally выполняется в самом начале? https://image.prntscr.com/image/_gcXCvPXSSuiYca_a5K8Vg.png
Короче, уже сказали тебе, но на всякий случай повторим что происходит: Ты что-то там инициализируешь, потом запускаешь АСИНХРОННО таски, они начинают выполняться в своём треде, но тред в котором ты их запускаешь продолжает выполняться дальше (на то оно и асинхронное выполнение. К.О.), а дальше у нас блок finally который должен быть выполнен при любом раскладе исполнения метода(по определению блока finally). Что делать, куда бежать? Ну как минимум погуглить про средства синхронизации в java. Тут тебе нужно дождаться выполниния своих асинхронных тасков. Можно сделать вообще через fork-join-pull и не париться. Можно просто для каждой таски вызвать метод get() (тогда ты залочишься до выполнения всех задач) можно этот список опрашивать isFinish() и редьюсить значения по в одно и пока false показывать пользователю кукиш )

Google
Ivan
17.06.2017
17:27:31
В общем вариантов много. Основное - это интерфейс Future

Vyacheslav
17.06.2017
17:28:26
А есть что-то кроме доки и Гугла, что можно про это прочитать?

Пока я начал делать через while (count !=0), там через гет забираю таски и делаю count-1. Когда будет 0 запустится второй метод. Норм?

Ivan
17.06.2017
17:31:22
Ну у тебя же список есть и есть шикарные стримы

get - блокирует текущий тред до завершения таски

Так что если у тебя хотя бы по разу для каждой отработал гет, то значит всё завершилось

Vyacheslav
17.06.2017
17:33:58
Так, а как​ вообще бегает этот гет по списку? Один раз прошёл и всё или постоянно опрашивает?

Гет же должен тогда постоянно обновлять состояние списка

Daniel
17.06.2017
17:35:06
гет блочит фьючи до результата, по факту ты извращенно написал однопоточное решение

Alexander
17.06.2017
17:35:47
Проблема будет только, если кто-то не сделает декремент лэтчу

На этот случай можно тайм-аут сделать

Vyacheslav
17.06.2017
17:38:15
Нужно попить водички и почитать про потоки. А то сложно, етить

Alexander
17.06.2017
17:38:53
http://javarevisited.blogspot.co.uk/2012/07/countdownlatch-example-in-java.html?m=1

Вот простой пример

Vyacheslav
17.06.2017
17:41:09
Хм. Проблема в том, что про потоки я знаю только то, что вычитал/наработал за пару дней написания приложения. Пока не хватает знаний как работает конкретно работает семафор и прочие штуки

Но спасибо, буду осваивать

Alexander
17.06.2017
17:43:19
Concurrency in practice в руки. Там там как раз первые главы про примитивы синхронизации

Vyacheslav
17.06.2017
17:43:38
Оке

Alexander
17.06.2017
17:47:18
Посмотри еще ExecutorService::invokeAll

Google
Alexander
17.06.2017
17:47:37
Возможно, это то, что тебе нужно

Admin
ERROR: S client not available

Alexander
17.06.2017
17:47:48
И проще чем шареный счетчик

Vyacheslav
17.06.2017
17:52:38
Для того, чтобы его запустить, разве не надо как-то отдельно собирать таски?

Alexander
17.06.2017
18:05:27
Надо

Но если ты можешь их собрать, почему бы и нет

Vyacheslav
17.06.2017
18:19:49
Так если я их запускаю через submit, то invoke никак не использовать, нет?

Dmitriy
17.06.2017
18:22:15
Просто прочтите книгу, которую вам посоветовали и часть вопросов сразу отпадёт

Roman
17.06.2017
18:52:38
А что за книга, если не секрет?

А, увидел. Спс)

Алексей
17.06.2017
18:59:53
где искать работу Spring+ORM/JDBC Angular/React разработчику?

Alex
17.06.2017
19:02:44
Ребят, в связи с закрытием сайта kenai, куда теперь ходить за недостающими либами?

Хотел потюнить jvm, выдало такое : Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly is disabled

Пошел за ней в Kenai, а он закрыт

Алексей
17.06.2017
19:04:57
где искать работу Spring+ORM/JDBC Angular/React разработчику?
можно хотя бы чятик с джававакансиями?

sss3 ?
17.06.2017
19:20:49
ну плз!
https://t.me/jvmjobs

Алексей
17.06.2017
19:21:05
https://t.me/jvmjobs
Спасибо

Vyacheslav
17.06.2017
20:28:27
Господа, подскажите ещё. Я вообще никак не понимаю из submit сделать invokeAll. Нашёл пример как должно выглядеть, но всё равно не получается. http://programador.ru/invokeall/

Google
Vyacheslav
17.06.2017
20:28:49
Я не понимаю как 2 метода в сабмите заменить на 1 callable

Igor
17.06.2017
20:31:45
Короче, уже сказали тебе, но на всякий случай повторим что происходит: Ты что-то там инициализируешь, потом запускаешь АСИНХРОННО таски, они начинают выполняться в своём треде, но тред в котором ты их запускаешь продолжает выполняться дальше (на то оно и асинхронное выполнение. К.О.), а дальше у нас блок finally который должен быть выполнен при любом раскладе исполнения метода(по определению блока finally). Что делать, куда бежать? Ну как минимум погуглить про средства синхронизации в java. Тут тебе нужно дождаться выполниния своих асинхронных тасков. Можно сделать вообще через fork-join-pull и не париться. Можно просто для каждой таски вызвать метод get() (тогда ты залочишься до выполнения всех задач) можно этот список опрашивать isFinish() и редьюсить значения по в одно и пока false показывать пользователю кукиш )
Ремарочка: форк-джойн лучше подходит для обработки данных, а тут обычные потоки.

Vyacheslav
17.06.2017
20:33:32
Nick
17.06.2017
20:41:19
@shnapsx какая задача то?

Vyacheslav
17.06.2017
20:43:38
@shnapsx какая задача то?
Вот есть этот кусок кода в стриме. Нужно поменять его с instance.submit на instance.invokeAll. А чтоб внутри каллабл выпонялись методы download и countplus.

То-бишь, чтобы это выполнилось и только тогда поток убежал дальше

Снобяъ
17.06.2017
21:45:00
Есть чат линуксоидов?

Ilusha [←↓ ↑→]
17.06.2017
21:51:38
Есть чат линуксоидов?
если есть – меня закиньте, пожалуйста)

Maks
17.06.2017
22:10:21
pro.linux

Взамен старой доброй группы pro.linux, с которой и началась вся серия групп pro.*, т.к. создатель её покинул нас Invite: https://t.me/joinchat/Be4rsT7VI1LxrHaMR3pezQ

Страница 1554 из 2890