169 похожих чатов

Всем привет, я по потокам в джаве основы знаю, подскажите

в каком направлении двигаться чтобы Concurrency подучить, я как понимаю это пакет concurrency в джаве посмотреть надо, а в спринге уже реактивщина как раз на основе этого пакета работает?

12 ответов

27 просмотров

не только пакет конкарренси, еще потокобезопасные коллекции типа ConcurrentHashMap а вообще атомики, синхронайед, локи, латчи, барьеры, фазеры, ключевое слово volatile вот это надо спринг не обязательно реактивный в дефолт спринг вебе просто на каждый реквест делается по потоку а бины по дефолту синглтоны то есть, те же сервисы должны быть потокобезопасными

Concurrency in practice книжка такая есть

Георгий- Автор вопроса
Александр Ушаков
не только пакет конкарренси, еще потокобезопасные ...

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

Георгий
То что на реквест по потоку я понимаю, мне больше ...

тут лучше не многопоток многопоток хорош в тяжелых по цпу задачах асинк в тяжелых по io ожидание бд или ответа из сети - это io тут либо анноташка Async, либо вообще спринг вебфлюкс нюанс в том, что хибернейт построен на ждбц а он блокирующий следовательно, если не хочешь в асинке лочить свой пул при запросе в бд, надо менять на r2dbc и опционально брать обертку, которая его умеет, типа jooq

Георгий- Автор вопроса
Александр Ушаков
тут лучше не многопоток многопоток хорош в тяжелы...

А async допустим я сделаю метод в сервисе для парсинга, а потом если начну в цикле перебирать и вызывать этот метод, то эти задачи начнут паралельно работать? Так данные в html будут приходить мне ещё нужно будет потратить ресурсы чтобы распарсить его

Георгий
А async допустим я сделаю метод в сервисе для парс...

в этом и разница в многопотоке при блокирующем вызове блокируется весь поток и стоит ждет, пока вызов завершится, просто расходуя ресурсы в асинке задача может освобождать поток, на котором выполняется, пока ждет ответа чтобы этот поток заняли другие задачи и он не простаивал поэтому параллельности тут можно добиться и многопотоком, и асинком но асинк будет эффективнее

Александр Ушаков
тут лучше не многопоток многопоток хорош в тяжелы...

когда я в Котлин в Корутине на Dispatchers.IO делаю запрос в бд с помощью jdbc, то у меня весь пул потоков Dispatchers.IO блокируется?

Khannan ☭ Saitgalin
когда я в Котлин в Корутине на Dispatchers.IO дела...

не весь, а только тот поток, на котором выполняется корутина, в которой идет вызов ждбц

Георгий- Автор вопроса

Спасибо, нужно получше в этом разобраться) А можете пример задачи приближенной к реальным проектам подсказать которую нужно решить с многопоточкой

Георгий
Спасибо, нужно получше в этом разобраться) А може...

многие не хотят морочиться с асинком и, пока перфоманс устраивает, всю параллельность пилят на многопотоке прикол в том, что каждый поток расходует оперативку и условная 1000 потоков будет в разы больше жрать, чем 1000 асинк тасок на пуле из 10 потоков, например

Георгий- Автор вопроса
Александр Ушаков
многие не хотят морочиться с асинком и, пока перфо...

А спринг реактившина строится же на том же принципе, там пул потоков пока задача там что-то ожидает, то поток освобождается?

Александр Ушаков
многие не хотят морочиться с асинком и, пока перфо...

но асинк таски надо перекидывать между потоками, и этот оверхед имеет смысл только если перекидывать реально надо типа если асинк таска делает неблокирующие вызовы в бд, сеть или диск, и ждет сидит то ее выкидывают с потока, пока она ответ не получит и на поток кидают другие, которым есть что делать поэтому потоки не простаивают если таска делает какие-то долгие вычисления и прочее, то есть не ждет никакого внешнего ответа, то ставить ее на паузу и выкидывать с потока нельзя и она его просто так занимает и работать такое будет ничуть не быстрее голой многопоточки, а то еще и медленнее крч асинк нужен, чтобы куча потоков не простаивала, когда чего-то ждет извне программы

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта