📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
Совет по SpringFramework 💡
Самый простой способ создания динамических SQL-запросов в JPA - это Query By Example. Вы создаете объект-пример, который оборачиваете в пример, а затем передаете его в ваш @SpringData
хранилищу. JPA создаст WHERE только с теми полями, которые вы задали.
👉 @BookJava
Pro Spring 6: An In-Depth Guide to the Spring Framework
Автор: Chris Schaefer (2023)
Эта книга выходит далеко за рамки основ: вы узнаете, как использовать новейший Spring Framework 6 для создания различных уровней и частей современных сложных корпоративных Java-прикладных систем, сверху донизу, включая доступ к данным, генерацию SQL с помощью jOOQ, персистентность с помощью Hibernate, транзакции, настройку безопасности, классические уровни web и презентаций и добавление некоторой реактивности.
Скачать
👉 @java_360
Бесплатный вебинар «Продвинутые аспекты Java collections framework» ☄️
05 марта в 18:00 проведем Бесплатный вебинар «Продвинутые аспекты Java collections framework».
В прямом эфире:
• Разберем тонкости при работе с массивами, списками и мапами
• Расскажем про разницу в производительности основных коллекций, use cases
• Ответим на популярные вопросы с собеседований на позицию Java Middle Developer
Ведущий: Роман Оборин
Опыт программирования на Java — 6 лет
Коммерческий опыт - 10 лет
Вебинар будет полезен Java разработчикам, которые заинтересованы перейти на позицию Middle, повысить уровень знаний Java collections, понять требования к разработчикам, подготовиться к техническому собеседованию.
Регистрация по ссылке:
https://clck.ru/399R3J
💖 Эфир приурочен к старту курса Java Middle Developer. Для забронировавших место на курсе до 19 марта предлагаем скидку 35%, стоимость обучения составит 85 000 руб.
Обсудить индивидуальную программу обучения, записаться на интервью и задать вопрос можно в нашем telegram-боте
Реклама. ООО "Платформа непрерывного обучения" ИНН 7839405924
erid: 2VtzqvQrQhY
Бесплатный вебинар «Продвинутые аспекты Java collections framework» ☄️
05 марта в 18:00 проведем Бесплатный вебинар «Продвинутые аспекты Java collections framework».
В прямом эфире:
• Разберем тонкости при работе с массивами, списками и мапами
• Расскажем про разницу в производительности основных коллекций, use cases
• Ответим на популярные вопросы с собеседований на позицию Java Middle Developer
Ведущий: Роман Оборин
Опыт программирования на Java — 6 лет
Коммерческий опыт - 10 лет
Вебинар будет полезен Java разработчикам, которые заинтересованы перейти на позицию Middle, повысить уровень знаний Java collections, понять требования к разработчикам, подготовиться к техническому собеседованию.
Регистрация по ссылке:
https://clck.ru/399Qa3
💖 Эфир приурочен к старту курса Java Middle Developer. Для забронировавших место на курсе до 19 марта предлагаем скидку 35%, стоимость обучения составит 85 000 руб.
Обсудить индивидуальную программу обучения, записаться на интервью и задать вопрос можно в нашем telegram-боте
Реклама. ООО "Платформа непрерывного обучения" ИНН 7839405924
erid: 2Vtzqv6yX6S
Что если бы Java-разработчики могли создавать веб-приложения, не прибегая к помощи JavaScript? 🤔
👉 @BookJava
Глубокое погружение в Java Memory Model
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
👉 @BookJava
Test Driven Development (TDD) in Java
Creating a Queue Abstract Data Type class
Introduction to Test Doubles Dummies and Stubs
Introduction to Test Doubles Spies
Introduction to Test Doubles Mocks
Introduction to Test Doubles - Fakes
источник
👉@BookJava
Все, что вам нужно знать о Java21
Как опытные Java-разработчики, так и новички найдут этот пост информативным и познавательным.
Выпуск Java 21 обусловлен двойной задачей: не только обеспечить множество улучшений производительности, безопасности и стабильности, но и привести язык в соответствие с меняющимися требованиями современных приложений. Java адаптируется к меняющемуся ландшафту и ожиданиям, связанным с ним, чтобы сохранить свою гибкость и актуальность.
https://www.unlogged.io/post/all-you-need-to-know-about-java21
👉@BookJava
🤝 Нам кажется, что вы не готовы к нашему курсу Разработчик на Spring Framework
На курсе все максимально строго:
- Курс рассчитан на профессионалов с практическим опытом работы на Java.
- Мы будем 5 месяцев погружать вас в теорию и практику Spring Framework.
- Дадим 18 практических работ. ❗️Процесс review сдаваемой работы максимально приближен к тому, каким он мог быть на реальном проекте.
- Помимо этого, мы попросим вас сдать дипломную работу. Хотите узнать какие требования к ней (p.s. и чем она будет вам полезна)?
🤝 Готовы рассказать на бесплатном демо-уроке "Как будем выбирать проект?"
➡️ Чтобы записаться на демо-урок вам нужно еще и тест пройти.
Кстати, это отличный шанс проверить свои знания!
Пройти тестРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Бесплатный практический вебинар — Java: с чего начать карьеру в программировании?
⏰ Когда: 29 февраля в 19:00 по мск.
Расскажем за 2 часа, как освоить базовые навыки программирования на Java, найти удаленную работу и расти в профессии.
На практике познакомимся с синтаксисом языка и напишем программу, которую часто дают новичкам на техническом интервью.
🎁 Всем, кто зарегистрировался — Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику — Карта компетенций Java-разработчика.
Погрузитесь в основы Java и задайте вопросы опытному разработчику!
Slim Docker Images для Java
Из этой статьи вы узнаете, как создавать слим Docker-образы для ваших Java-приложений с помощью Alpine Linux и Jlink.
https://piotrminkowski.com/2023/11/07/slim-docker-images-for-java/
👉@BookJava
Совет по SpringFramework 💡
При использовании @SpringSecurity
вы можете получить доступ к текущим данным аутентификации, добавив объект Authentication в качестве параметра метода в вашем @RestController
class.
👉@BookJava
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Чат программистов📌
/channel/developers_ru
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
Excel лайфхак📌
/channel/Excel_lifehack
Разница между Component, Service, Controller и Repository в Spring Framework
Сегодня я расскажу об одном из самых популярных и фундаментальных - разнице между аннотациями @Component
, @Service
, @Controller
и @Repository
.
https://levelup.gitconnected.com/difference-between-component-service-controller-and-repository-in-spring-framework-b2ce8e5128ca
👉@BookJava
⁉️ Как стать разработчиком на Spring в 2024?
Узнайте на бесплатном практическом уроке от OTUS, где опытный эксперт приоткроет закулисье нашего курса и расскажет:
✔️ как грамотно выбрать итоговый проект, чтобы использовать его для портфолио и получить максимум практических навыков;
✔️ какие требования мы предъявляем к проектам студентов;
✔️ как проходит реализация проектов.
📢📢 Занятие пройдёт 28 февраля в 20:00 мск и будет приурочено к старту курса «Разработчик на Spring Framework».
Доступна рассрочка на обучение!
➡️ Пройдите короткий тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://vk.cc/cuQHmWРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Абстрактные классы и методы в Java: Объяснение!
Абстракция - это процесс сокрытия деталей реализации и представления пользователю только основных функций. Это позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает.
В Java абстрактные классы и методы являются ключевыми инструментами для реализации абстракции. Абстрактные классы служат шаблонами для создания подклассов, а абстрактные методы определяют поведение этих подклассов.
1. Используйте абстрактные классы для моделирования иерархий связанных классов: Абстрактные классы - отличный способ представить группу связанных классов, имеющих общую функциональность. Создав абстрактный класс, определяющий общие методы и свойства, вы сможете избежать дублирования кода и сделать свой код более модульным и удобным для сопровождения.
2. Используйте абстрактные методы для определения общего поведения: Абстрактные методы полезны, когда вы хотите обеспечить определенное поведение для нескольких подклассов. Определив абстрактный метод в абстрактном классе, вы можете гарантировать, что все подклассы реализуют одно и то же поведение по-своему.
3. Не злоупотребляйте абстрактными классами и методами: Хотя абстрактные классы и методы могут быть мощными инструментами, важно не злоупотреблять ими. В целом, создавать абстрактный класс или метод следует только в том случае, если у вас есть четкая причина для этого. Чрезмерное использование может привести к излишней сложности и усложнить сопровождение кода.
4. Соблюдайте соглашения об именовании: При присвоении имен абстрактным классам и методам важно следовать стандартным соглашениям об именовании в Java. Абстрактные классы следует называть абстрактным существительным (например, "Shape"), а абстрактные методы - глаголом (например, "draw").
5. Документируйте свой код: Как и при работе с любым кодом, важно документировать абстрактные классы и методы, чтобы сделать их более понятными для других разработчиков. Используйте четкие и лаконичные комментарии, чтобы объяснить назначение и поведение каждого класса и метода.
https://www.appsdeveloperblog.com/17-abstract-classes-and-methods-in-java/
👉 @BookJava
ИИ-чатбот + веб-интерфейс менее чем за 20 строк на Java с использованием Spring AI и Vaadin 🤖
А в качестве нативного образа GraalVM, он запускается за 0,1 секунды! ⚡
https://github.com/marcushellberg/spring-ai-web
👉 @BookJava
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Чат программистов📌
/channel/developers_ru
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
Excel лайфхак📌
/channel/Excel_lifehack
IntelliJ IDEA EAP обеспечивает навигацию по журналам именно в том месте, где было зарегистрировано сообщение!
https://blog.jetbrains.com/idea/2024/02/intellij-idea-2024-1-eap-6/
👉 @BookJava
Хотите понять, как решаются одни и те же задачи с помощью кода на разных языках? Записывайтесь на бесплатный мини-курс по основам Java-разработки. На нём вы не только изучите основы и инструменты Java, но и сравните возможности Java и Python, разберёте, чем полезен каждый язык. Опыт и знания в IT не нужны для участия.
Подробнее: 👉 https://epic.st/LVs5Ep
— Формат мини-курса отлично подойдёт для обучения из любой точки мира. Смотрите видео в удобное время, а после выполняйте практические задания. В конце вас ждёт прямой эфир с экспертом, где он поделится профессиональными секретами, разберёт работы участников и ответит на вопросы.
Что будем делать на мини-курсе:
🔹 Обсудим, почему Java — один из самых востребованных языков
🔹 Познакомимся с кодом Java и рассмотрим ключевые элементы приложений на этом языке
🔹 Определим навыки для трудоустройства
🔹 Сравним Java и Python
🔹 Сделаем 3 Java-приложения по инструкции
Успейте записаться бесплатно!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Привет! Это Podlodka Crew, мы организовываем IT-конференции онлайн по разным технологиям.
Уже 11 марта у нас стартует новый сезон по Java с актуальной темой «Интеграции между сервисами».
С интеграциями мы сталкиваемся каждый день и вынуждены разбираться, какие выбирать и как их правильно реализовать.
В этом сезоне обсудим best practices, научимся их применять в реальной жизни, развенчаем популярные мифы:
🌟Звёздная рулетка кейсов с Филлипом Дельгядо, Гришей Кошелевым, Владимиром Картяевым и Кириллом Ветчинкиным. Выясним, когда использовать синхронное, а когда асинхронное взаимодействие. Всё это — на примере задач из опыта спикеров.
🌟 Рассмотрим современный клиент NoSQL баз данных вместе с Артёмом Дубининым из VK и Tarantool. Подружим Java с NoSQL базами данных, поймём, какой API использовать, подберём интерфейсы к серверу и кластеру. Изучим опыт внедрения Spring Data API.
🌟Обсудим легенды и мифы REST API: существует ли он и как его разрабатывать. А ещё окунёмся в best-practices разработки JSON HTTP API и затронем вопросы синергии REST с современными микросервисными архитектурами.
Это не все доклады нового сезона! Приходи на сайт смотреть подробное расписание и забирай свой билет: https://podlodka.io/javacrew
Реклама. ИП Толстая Елена Петровна ИНН:507503278104, erid:2SDnjbwP94c
👁🗨 Как делать профилирование с помощью VisualVM в Java?
Расскажет Александр Царев — Tech Lead в Сбере и кандидат технических наук.
Встречаемся на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом:
- вспомните, что такое дамп потоков и как его получить;
- узнаете разницу между профилированием и семплированием и как их проводить с помощью инструмента VisualVM;
- разберете результаты семплирования, чтобы понять, как по ним находить узкие места в производительности.
📢📢 Занятие пройдёт 6 марта в 20:00 мск и будет приурочено к старту курса «Java Developer. Advanced».
Доступна рассрочка на обучение!
➡️ Пройдите короткий тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://vk.cc/cv2RGKРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Пишем минимальный ActivityPub-сервер с нуля
Mastodon — это децентрализованная социальная сеть, работающая по модели федерации, как email. Протокол федерации называется ActivityPub и является стандартом W3C, а Mastodon — далеко не единственная его реализация, но самая популярная. Различные реализации протокола, как правило, совместимы друг с другом, настолько, насколько им позволяют их совпадения в функциональности. У меня есть и мой собственный проект ActivityPub-сервера — Smithereen, такой зелёный децентрализованный ВК, где я когда-нибудь таки верну стену.
В этой статье мы рассмотрим основы протокола ActivityPub и напишем минимально возможную реализацию сервера, позволяющую отправлять посты в сеть («fediverse»), подписываться на других пользователей и получать от них обновления.
https://habr.com/ru/articles/702724/
👉@BookJava
Совет по Spring Boot 💡
Вы думаете о замене 🍃`RestTemplate
` на новый Spring `RestClient
`? Конфигурация SSL очень проста благодаря поддержке 🔐`SslBundles
` через интерфейс `RestClientSsl
` 👆
👉@BookJava
Совет по Spring Boot💡
Ошибка конфигурации сервера Spring Boot ⬇
https://gist.github.com/aoudiamoncef/bba3f7c79f1056a22a3a82b3a171b5b3
👉@BookJava
👩💻 Java Developer. Professional — новая расширенная программа для нереального повышения квалификации
Освойте самые востребованные практики под руководством топовых экспертов из ведущих компаний на онлайн-курсе от OTUS.
Обновленная программа идеально подойдет для опытных разработчиков на Java и других языках ООП, которые уперлись в карьерный и финансовый потолок.
На курсе вас ждут:
- живые вебинары с разбором самых важных тем;
- еще больше практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити;
- рассрочка на выгодных условиях.
Набор всего 2 раза в год, не упустите свой шанс!
➡️ Пройдите бесплатный тест прямо сейчас и узнайте, готовы ли вы стать более востребованным специалистом: https://vk.cc/cuYCXHРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что находится внутри класса Math?
👉@BookJava
💪 Как Java-разработчику повысить квалификацию и увеличить доход в 2024?
Освоить JVM с профилированием и оптимизацией приложений в облаках на онлайн-курсе «Java Developer. Advanced» от OTUS.
Программа идеально подойдет для Java-разработчиков с опытом от 2-х лет, желающих углубить знания в устройстве JVM, принципах профилирования и оптимизации приложений в облачной инфраструктуре.
На курсе вас ждут:
▫️ живые вебинары с возможностью задать вопросы экспертам;
▫️много практики и сильные проекты для портфолио;
▫️поддержка профессионального комьюнити;
▫️ рассрочка на комфортных условиях.
🤝 Проверьте свои навыки пройдя тест и получите специальную цену: https://vk.cc/cuSK78Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Чем отличается CountDownLatch от CyclicBarrier?
CountDownLatch, дословно «Запор с обратным отсчетом», – примитив синхронизации из стандартной библиотеки Java. Он останавливает пришедшие потоки, пока внутренний счетчик не достигнет нуля. Чтобы поставить поток на ожидание, нужно вызвать из него метод await()
.
Начальное значение счетчика задается параметром конструктора, затем уменьшается на 1 методом countDown()
. Узнать текущее значение можно с помощью getCount()
. Изменение значения счетчика никак не связано с потоками, его можно вызывать откуда и когда угодно.
CyclicBarrier – барьер для потоков, который ломается при достижении критической массы ожидающих. Это тоже класс из Java Concurrency Framework. Поток также встает на ожидание методом await()
. Ожидающие потоки называются parties, их лимит также устанавливается в конструкторе.
Технически, parties барьера и count латча – одно и то же, await барьера – это await+countDown латча. В барьере тоже доступна информация о текущем состоянии барьера (методы isBroken
, getParties
и getNumberWaiting
).
Помимо этого, CyclicBarrier дает две дополнительных возможности. Во-первых, в конструктор кроме parties можно передать коллбэк с действием, которое выполнится в момент прорыва барьера. Во-вторых, этот примитив переиспользуется: метод reset()
насильно прорывает текущий барьер и устанавливает новый.
Оба этих примитива помогают решить задачу о гарантированных дедлоках. Противоположность латча и барьера – семафор. В нём потоки блокируются при достижении счетчиком нуля.
👉@BookJava
Совет по Spring Boot💡
Spring Boot Custom Bean Validations с Jakarta Constraint Validator, группировка ограничений проверки, последовательность групп и i18n
https://gist.github.com/aoudiamoncef/9eeece142d1ef0faa4d06216a41282a2
👉@BookJava