ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

Java Books

Java Books

前往频道在 Telegram

Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 5032728887

显示更多

📈 Telegram 频道 Java Books 的分析概览

频道 Java Books (@java_library) 是活跃参与者。目前社区聚集了 14 134 名订阅者,在 技术与应用 类别中位列第 9 012,并在 俄罗斯 地区排名第 46 014 位。

📊 受众指标与增长动态

自 невідомо 创建以来,项目保持高速增长,吸引了 14 134 名订阅者。

根据 25 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -83,过去 24 小时变化为 -3,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 8.64%。内容发布后 24 小时内通常能获得 3.46% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 221 次浏览,首日通常累积 489 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 1。
  • 主题关注点: 内容集中在 docker, собеседование, sql, boot, string 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
“Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 503272888...”

凭借高频更新(最新数据采集于 26 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

14 134
订阅者
-324 小时
-217 天
-8330 天
吸引订阅者
10月 '26
十月 '26
+29
在1个频道中
九月 '26
+87
在0个频道中
Get PRO
八月 '26
+74
在0个频道中
Get PRO
七月 '26
+155
在41个频道中
Get PRO
六月 '26
+89
在0个频道中
Get PRO
五月 '26
+109
在0个频道中
Get PRO
四月 '26
+109
在0个频道中
Get PRO
三月 '26
+71
在0个频道中
Get PRO
二月 '26
+265
在0个频道中
Get PRO
一月 '26
+343
在1个频道中
Get PRO
十二月 '25
+126
在0个频道中
Get PRO
十一月 '25
+205
在43个频道中
Get PRO
十月 '25
+175
在13个频道中
Get PRO
九月 '25
+293
在34个频道中
Get PRO
八月 '25
+310
在0个频道中
Get PRO
七月 '25
+593
在49个频道中
Get PRO
六月 '25
+301
在31个频道中
Get PRO
五月 '25
+192
在2个频道中
Get PRO
四月 '25
+407
在0个频道中
Get PRO
三月 '25
+285
在0个频道中
Get PRO
二月 '25
+114
在0个频道中
Get PRO
一月 '25
+174
在0个频道中
Get PRO
十二月 '24
+539
在4个频道中
Get PRO
十一月 '24
+1 143
在2个频道中
Get PRO
十月 '24
+1 287
在3个频道中
Get PRO
九月 '24
+479
在1个频道中
Get PRO
八月 '24
+490
在1个频道中
Get PRO
七月 '24
+500
在0个频道中
Get PRO
六月 '24
+503
在1个频道中
Get PRO
五月 '24
+364
在34个频道中
Get PRO
四月 '24
+351
在43个频道中
Get PRO
三月 '24
+358
在20个频道中
Get PRO
二月 '24
+306
在2个频道中
Get PRO
一月 '24
+672
在45个频道中
Get PRO
十二月 '23
+451
在39个频道中
Get PRO
十一月 '23
+1 213
在5个频道中
Get PRO
十月 '23
+396
在18个频道中
Get PRO
九月 '23
+387
在0个频道中
Get PRO
八月 '23
+316
在0个频道中
Get PRO
七月 '23
+1 305
在0个频道中
Get PRO
六月 '23
+277
在0个频道中
Get PRO
五月 '23
+2 744
在0个频道中
Get PRO
四月 '23
+59
在0个频道中
Get PRO
三月 '23
+106
在0个频道中
Get PRO
二月 '23
+195
在0个频道中
Get PRO
一月 '23
+938
在0个频道中
Get PRO
十二月 '22
+881
在0个频道中
Get PRO
十一月 '22
+194
在0个频道中
Get PRO
十月 '22
+213
在0个频道中
Get PRO
九月 '22
+1 647
在0个频道中
Get PRO
八月 '22
+866
在0个频道中
Get PRO
七月 '22
+199
在0个频道中
Get PRO
六月 '22
+1 429
在0个频道中
日期
订阅者增长
提及
频道
26 十月0
25 十月0
24 十月0
23 十月0
22 十月+6
21 十月+1
20 十月+3
19 十月0
18 十月+3
17 十月+3
16 十月0
15 十月0
14 十月0
13 十月+1
12 十月+2
11 十月0
10 十月+1
09 十月+1
08 十月+4
07 十月+3
06 十月+1
05 十月0
04 十月0
03 十月0
02 十月0
01 十月0
频道帖子
Java: помогите IDE заметить возможный `NullPointerException` до запуска программы. Аннотации `@NonNull` и `@Nullable` описыва
Java: помогите IDE заметить возможный `NullPointerException` до запуска программы. Аннотации `@NonNull` и `@Nullable` описывают контракт: где null недопустим, а где его нужно обработать.

String displayName(@NonNull User user) {
    @Nullable String name = user.getName();

    if (name == null) {
        return "unknown";
    }

    return name.toUpperCase();
}
`user` не должен быть `null`, а имя может отсутствовать – поэтому перед toUpperCase() стоит проверка. При поддержке выбранных аннотаций IDE или статический анализатор предупредит о нарушении контракта прямо во время написания кода. Сами аннотации не гарантируют проверку во время выполнения. Их поведение зависит от библиотеки и инструментов. Чтобы контракт работал между методами, помечайте и параметры, и возвращаемые значения – например, getName().

2
Spring Boot запустился быстрее. А обязательная проверка так и не выполнилась. Причиной может быть одна настройка: spring.main
Spring Boot запустился быстрее. А обязательная проверка так и не выполнилась. Причиной может быть одна настройка: spring.main.lazy-initialization=true Она откладывает создание многих бинов до момента, когда они понадобятся. Вместе с ними откладывается и `@PostConstruct`. Если внутри такого бина спрятаны прогрев кеша или ваша проверка схемы БД, они выполнятся только при его создании. Никто не запросил бин — код может вообще не запуститься. Другие последствия: первый запрос может стать медленнее, а ошибка конфигурации обнаружится уже после старта приложения. Критическую инициализацию можно оставить на старте: @Component @Lazy(false) public class SchemaVerifier { @PostConstruct void init() { verifySchema(); } private void verifySchema() { // Проверка совместимости схемы БД } } `@PostConstruct` означает «после создания бина», а не «обязательно при запуске приложения». Нюанс: lazy-бин всё же может создаться на старте, если нужен другому бину, который инициализируется сразу. https://docs.spring.io/spring-boot/reference/features/spring-application.html
870
3
💡 Миллион потоков в Java? С virtual threads это реально Виртуальные потоки, ставшие стабильной возможностью в Java 21, позво
💡 Миллион потоков в Java? С virtual threads это реально Виртуальные потоки, ставшие стабильной возможностью в Java 21, позволяют обслуживать множество задач, которые большую часть времени ждут ответа от сети или базы данных. Каждому такому потоку не нужен отдельный поток ОС. При многих блокирующих I/O-операциях JVM освобождает системный поток для другой работы, пока виртуальный ждёт. Код остаётся привычным и последовательным, без обязательного перехода на цепочки колбэков. Особенно полезно для множества одновременных HTTP-запросов и обращений к БД. Но тяжёлые вычисления быстрее не станут: виртуальные потоки помогают увеличить число обслуживаемых задач, а не скорость процессора. И да: миллион потоков не означает миллион соединений с БД. Пулы соединений и ограничения нагрузки по-прежнему нужны.
1 234
4
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_ci Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
970
5
💡 Одинаковый ввод? Не вычисляйте результат заново. Сохраняйте результаты затратных вычислений в кэше: ✅ Используйте входные
💡 Одинаковый ввод? Не вычисляйте результат заново. Сохраняйте результаты затратных вычислений в кэше: ✅ Используйте входные данные как ключ в Map. ✅ Если кэш общий для нескольких потоков, выбирайте ConcurrentHashMap. ✅ computeIfAbsent() вычислит и сохранит значение, если ключа ещё нет. Следующие вызовы вернут готовый результат. Нюанс: если функция вернула null или выбросила исключение, результат не сохранится и вычисление может повториться. Сам по себе ConcurrentHashMap не ограничивает размер кэша и не удаляет устаревшие записи.
990
6
🧠 Spring AI показал, как сделать RAG заметно умнее обычного vector search. Проблема классического RAG: похожий документ ещё не значит полезный. Новый пайплайн делает так: Question → Rewrite → MultiQuery → Vector Search → Jev Filter → Rerank → LLM Jev проверяет каждый найденный chunk: есть ли там реальный ответ, противоречие или prompt injection. В демо vector search нашёл 6 фрагментов, но до модели дошли только 2 действительно полезных. Меньше мусора в контексте → точнее ответы и меньше шансов на prompt injection. Код и разбор: https://spring.io/blog/2026/10/02/spring-ai-modular-rag-typesafe-jev/
1 679
7
🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь, что реально проверяют на собеседов
🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь, что реально проверяют на собеседованиях. Решение — знать, чего от тебя ждёт интервьюер, и уметь правильно донести свою мысль. Для этого ребята из ШОРТКАТ (менторской программы для разработчиков) собрали в один файл ОТВЕТЫ НА 50 СЛОЖНЫХ ВОПРОСОВ с Java-собеседований 🔥 Они проанализировали более 100 мок-интервью и собрали внутри реальные вопросы + ответы сильного кандидата. ⚠️ Забрать можно бесплатно в боте — @shortcut_sh_bot В том же боте ты сможешь зарегаться на эфир с бесплатным тестовым интервью на Java-разработчика! Эфир пройдёт 7 октября в 19:00 МСК. Его проведёт Виктор Анохин — Senior-разработчик из Wildberries, ex-Билайн. Ты сможешь вживую услышать, какие вопросы задают на собесах в топовых компаниях, и лично задать вопрос ментору из бигтеха 🔝 Всё это бесплатно, тебе нужно только нажать на ссылку и забрать все плюшки ↓ @shortcut_sh_bot Реклама. О рекламодателе.
1 060
8
💡 Предпочитайте делегирование наследованию Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше
💡 Предпочитайте делегирование наследованию Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше кода. Но есть цена. ✅ Подкласс получает весь API родителя. ✅ Он зависит от деталей реализации суперкласса. ✅ Изменение родительского класса может неожиданно сломать потомка. И чем глубже иерархия, тем сложнее понять, откуда вообще взялось конкретное поведение. Часто безопаснее композиция: class OrderService { private final PaymentService paymentService; } Вместо наследования: class OrderService extends PaymentService { } Композиция связывает объекты. Наследование связывает их судьбы. Если объекту просто нужна чужая функциональность, чаще лучше её делегировать, а не наследовать.
1 941
9
Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение без воды: каждый модуль состоит из
Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение без воды: каждый модуль состоит из понятной теории, схем, команд, которые можно запустить у себя, типичных ошибок и вопросов для самопроверки. Курс подходит, чтобы выучить Kafka с нуля, подготовиться к собеседованию на backend, data engineer или DevOps-позицию и спроектировать надёжную систему на Kafka в продакшене. https://github.com/justxor/KAFKAFREECOURSR
2 657
10
🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности https://uproger.com/java-v-2026-godu-25
🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности https://uproger.com/java-v-2026-godu-25-luchshih-prakticheskih-primerov-koda-ot-osnov-do-mnogopotochnosti/
2 556
11
☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обхода HashSet зависит от количества эле
☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обхода HashSet зависит от количества элементов и размера внутренней таблицы. var ids = new HashSet<Integer>(1_000_000); for (int i = 0; i < 10; i++) { ids.add(i); } for (int id : ids) { process(id); } После добавления элементов внутри выделена огромная таблица. Итератор проходит по её ячейкам, включая пустые, хотя size() возвращает всего 10. Сложность обхода - O(size + capacity). Поэтому большая ёмкость «про запас» может замедлить регулярный перебор. Если коллекция уже сильно разрослась, а затем почти опустела, можно пересобрать её: ids = new HashSet<>(ids); Новый набор подберёт ёмкость под оставшиеся элементы. Пересборка требует времени и дополнительной памяти, поэтому имеет смысл перед многократными обходами, а не внутри каждого цикла. Документация - https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/HashSet.html
2 567
12
🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Stepik: «Python современный AI для раз
🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Stepik: «Python современный AI для разработчика и автоматизации задач» 63 урока, 382 шага, практика с кодом и автопроверкой. Внутри: RAG, tool calling, агенты, evals, MCP, Ollama, vLLM, pgvector + HNSW, безопасный text-to-SQL, prompt injection, кэш, очереди и sandbox для агентного кода. Плюс реальные автоматизации: почта, отчёты, боты, вебхуки и браузерные сценарии. Для тех, кто уже знает Python и хочет перейти к production AI. ⏳ 72 часа скидка 55% https://stepik.org/a/295921
1 667
13
☕️ Java получил практический MCP-сервер для медицинского AI-триажа На JavaOne показали систему, где жалоба пациента превращается в тикет, а AI определяет его срочность. Теперь Oracle подробно разобрала MCP-сервер, который принимает текст и возвращает оценку от 0 до 10. Сервер построен на Helidon и публикует один инструмент через @Mcp.Tool. Клиенту не нужно знать, какая модель работает внутри. Доступны два режима: * локальный MiniLM через DJL - 384-мерные эмбеддинги, без API и сети; * OpenAI text-embedding-3-small - 1536-мерные эмбеддинги. Финальную оценку в обоих случаях вычисляет локальная нейросеть DeepNetts. Важный нюанс: для каждого типа эмбеддингов нужна отдельно обученная модель оценки. Нельзя взять модель, обученную на векторах MiniLM, и передать ей векторы OpenAI, даже если привести их к одинаковому размеру. MCP-интерфейс при этом остаётся неизменным: жалоба → эмбеддинг → DeepNetts → срочность 0–10 Локальный режим подходит для разработки и интеграционных тестов, внешний - для проверки качества на более мощной модели. https://inside.java/2026/07/25/design-java-mcp-tool/
1 851
14
Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/justxor/KAFKAFREECOURSR/tree/main
Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/justxor/KAFKAFREECOURSR/tree/main
1 747
15
Autobase Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием An
Autobase Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием Ansible. Он поддерживает широкий набор функций, включая настройку репликации, автоматизацию резервного копирования с помощью инструментов, таких как pgBackRest и WAL-G, мониторинг состояния кластеров, а также настройку высокодоступной инфраструктуры (HA). Проект упрощает настройку PostgreSQL и снижает вероятность ошибок, обеспечивая удобные плейбуки для типичных задач. Его можно использовать как для новых установок, так и для работы с существующими конфигурациями. https://github.com/autobase-tech/autobase
1 838
16
Школа программирования Java Online Projects поздравляет с Днем Знаний!🧑‍🎓📚 Вышло наше финальное занятие курса по Микросерв
Школа программирования Java Online Projects поздравляет с Днем Знаний!🧑‍🎓📚 Вышло наше финальное занятие курса по Микросервисной архитектуре — «Нагрузочное тестирование. Gatling». На нем мы на практике разбираем, как наше приложение ведет себя под реальной высокой нагрузкой. Вместе с ним мы запускаем последнюю акцию перед подорожанием: 🔥 Скидка 50% на курсы «Микросервисы, Kafka, Docker Spring Cloud, WebFlux» и «Деплой микросервисов в Kubernetis/Helm» ✨ Бонусы: выпускные проекты Rescue Service и TopJava2 ✨ Курс TopKotlin или DocJava в подарок Суперпредложение: скидка 55% скидка на всю линейку Микросервисов + все бонусы включены🔥 Программа на 100% покрывает продвинутый стек компетенций: ✨ Архитектура и веб-стек — начинаем с реактивных приложений: Project Reactor, Spring WebFlux, R2DBC. Дальше переходим на Spring Boot 4 — полный MVC-стек и виртуальные потоки (Virtual Threads). ✨ Инфраструктура Spring Cloud — отказоустойчивые системы на Spring Cloud Gateway и Config Server, паттерны Circuit Breaker, RateLimiter, Retry. ✨ Event-Driven & Data — асинхронное взаимодействие через Kafka, сериализация в Avro и хранение схем в Schema Registry, паттерн Outbox с Kafka Connect и Debezium поверх PostgreSQL, Hibernate/JPA и миграции Flyway. ✨ Безопасность — сквозная аутентификация и авторизация на Keycloak, OAuth 2.0, OpenID Connect и JWT, защита от CSRF, хранение сессий в Redis. ✨ Тестирование и качество — интеграционные тесты с Testcontainers, WireMock и Awaitility, проверка под высокой нагрузкой с Gatling. ✨ Observability — метрики, логи и распределенные трассировки через Micrometer, Prometheus, Loki, Tempo (или Zipkin) и визуализация всего этого в Grafana. ✨ DevOps и развертывание — пайплайны в GitHub Actions, Docker и Docker Compose, оркестрация в Kubernetes, управление релизами через Helm. 🚀 Больше 30 технологий в одной линейке! Успейте забрать курсы по суперцене до окончания акции! 💥
1 556
17
⚡️ «Контейнеры - это просто Linux-процессы» - полезное упрощение, но не совсем правда Обычно контейнер объясняют так: > конте
⚡️ «Контейнеры - это просто Linux-процессы» - полезное упрощение, но не совсем правда Обычно контейнер объясняют так: > контейнер = обычный Linux-процесс + namespaces + cgroups Для первого знакомства этого хватает. Но OCI Runtime Spec определяет контейнер шире: это изолированная среда для запуска процессов, а не сам процесс. И Linux-механизмы, только один из вариантов реализации. OCI охватывает не только Linux, но и: - Windows - FreeBSD - Solaris - z/OS - VM-based containers То есть контейнер не обязан быть «процессом в Linux». Важнее то, что среда соответствует контейнерной модели: изоляция, файловая система, ресурсы, lifecycle и правила запуска. Хороший разбор того, что контейнер представляет собой на самом деле: https://labs.iximiuz.com/tutorials/oci-containers-explained
1 244
18
🔥 Java: subList() может неожиданно удерживать огромный список в памяти Кажется, что: List<Item> small = hugeList.subList(0, 10); hugeList = null; оставит только 10 элементов. Но subList() обычно создаёт представление исходного списка, а не независимую копию. Пока жив small, исходный ArrayList и его внутренний массив тоже могут оставаться в памяти. Если нужна отдельная маленькая коллекция: ` List<Item> small = new ArrayList<>(hugeList.subList(0, 10)); Особенно неприятный баг в кэшах и долгоживущих объектах: сохраняешь 10 элементов — а в памяти остаются сотни тысяч.
1 528
19
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста.
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста. 🌐 С курсом «Системный дизайн высоконагруженных проектов» вы: ▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое) ▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд. ▪️ научитесь планировать нагрузку и связывать бизнес-показатели с нефункциональными требованиями к системе ▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью. Всё в формате живых онлайн-сессий (лекции, брейнштормы, презентации домашних проектов). 🤩 Кто мы: R&D-центр Devhands.ru, наш канал (https://t.me/rybakalexey). Основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo, с 20-летним опытом высоконагруженных проектов и управления глобальными технологическими организациями. 🗓 Старт 7 сентября, изучаем программу, записываемся здесь Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqvimBRf
1 987
20
Java-ловушка: почему `parallelStream()` может замедлить приложение Многие думают: «Есть stream(), добавлю parallelStream() — станет быстрее». Но не всегда. parallelStream() использует общий ForkJoinPool Java: users.parallelStream() .map(this::callExternalApi) .toList(); Если внутри идут HTTP-запросы, SQL или ожидание внешнего сервиса, можно получить обратный эффект: забить общий пул потоков увеличить задержки замедлить другие части приложения parallelStream() хорошо подходит для: ✅ сложных CPU-вычислений ✅ обработки больших коллекций ✅ математических операций Но плохо подходит для: ❌ HTTP ❌ базы данных ❌ файлового I/O ❌ ожидания внешних сервисов Для таких задач лучше использовать отдельный пул: ExecutorService executor = Executors.newFixedThreadPool(20); и контролировать количество параллельных операций. Главное правило: parallelStream() — для вычислений. ExecutorService — для бизнес-логики и внешних вызовов. Код может идеально работать на тестах, но в production внезапно получить проблемы из-за одного parallelStream().
2 047