Java библиотека
Книги, статьи, мемы и многое другое для Java программиста! По сотрудничеству и рекламе: @NadikaKir Канал в перечне РКН: https://vk.cc/cJrT4A Мы на бирже: https://telega.in/c/javalib/ Сообщество VK https://vk.com/javatutorial
Show more📈 Analytical overview of Telegram channel Java библиотека
Channel Java библиотека (@javalib) in the Russian language segment is an active participant. Currently, the community unites 31 009 subscribers, ranking 4 391 in the Technologies & Applications category and 20 998 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 31 009 subscribers.
According to the latest data from 30 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -65 over the last 30 days and by 5 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.62%. Within the first 24 hours after publication, content typically collects 5.85% reactions from the total number of subscribers.
- Post reach: On average, each post receives 2 673 views. Within the first day, a publication typically gains 1 815 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
- Thematic interests: Content is focused on key topics such as string, мониторинг, строка, boot, архитектура.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Книги, статьи, мемы и многое другое для Java программиста!
По сотрудничеству и рекламе: @NadikaKir
Канал в перечне РКН: https://vk.cc/cJrT4A
Мы на бирже: https://telega.in/c/javalib/
Сообщество VK https://vk.com/javatutorial”
Thanks to the high frequency of updates (latest data received on 01 July, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
synchronized может сильно тормозить систему.
В таких случаях лучше использовать ReentrantReadWriteLock из java.util.concurrent.
Идея простая:
- Read Lock — позволяет нескольким потокам читать данные одновременно
- Write Lock — разрешает запись только одному потоку и блокирует всех остальных
Таким образом можно сильно увеличить параллелизм: десятки потоков могут читать данные одновременно, а запись происходит эксклюзивно.
Когда это полезно:
- данные читаются очень часто
- записи происходят редко
- важно максимально увеличить throughput системы
Примеры использования:
кэш в сервисе, конфигурации, метаданные, in-memory storage, state менеджеры.
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class SharedValue {
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private int value = 0;
public int readValue() {
lock.readLock().lock();
try {
return value;
} finally {
lock.readLock().unlock();
}
}
public void writeValue(int newValue) {
lock.writeLock().lock();
try {
value = newValue;
} finally {
lock.writeLock().unlock();
}
}
}
Главный плюс:
несколько потоков могут читать одновременно, не блокируя друг друга.
Но как только начинается запись - все чтения и записи блокируются, пока операция не завершится.
Подписывайся на наш канал в Max 🟪Box<T> → Обобщённый класс
• Используй, когда класс работает с любым типом (например, обёртка вокруг любого объекта, как Box<User>, Box<Integer>).
2. <T> void print(T val) → Обобщённый метод
• Используй, когда метод должен принимать любой тип (например, для печати любого объекта, логирования, сравнения и т.п.).
3. <T extends Number> → Ограниченный тип
• Называется верхней границей.
• Используй, когда тип должен быть подклассом чего-то (например, утилита для работы с int, double, float).
4. <T extends A & B> → Несколько ограничений
• Заставляет T реализовывать и A, и B.
• Используй, когда нужны обе особенности (например, сортировка объекта, который также требует валидации).
5. <?> → Неограниченный подстановочный тип
• Это означает неизвестный тип.
• Используй, когда не важен тип, нужно только читать (например, печать элементов из любого списка).
6. <? extends T> → Верхняя граница подстановочного типа
• Означает некоторый подкласс T.
• Используй при чтении из коллекции (например, чтение чисел из List<? extends Number> без модификации).
7. <? super T> → Нижняя граница подстановочного типа
• Означает некоторый суперкласс T.
• Используй при записи в коллекцию (например, добавление Integer в List<? super Integer>).
8. Правило PECS
• Producer Extends, Consumer Super.
• Используй extends для чтения, super для записи (например, API-вход против обработки ответа).
9. List list = new ArrayList(); → Сырой тип
• Это сырой тип.
• Избегай — тк теряется типовая безопасность (например, компилятор не поймает, если добавишь неверные типы).
10. Стирание типов
• Java удаляет всю информацию об обобщениях во время выполнения.
• Поэтому нельзя использовать T.class, new T(), или instanceof T (например, нельзя делать проверки или создавать объекты на основе T).
11. Обобщённый конструктор
<T> MyClass(T val) { }
• Используй, когда конструктору нужен обобщённый параметр, даже если сам класс не обобщённый (например, инициализация с динамическими типами).
12. Обобщённый интерфейс
interface Mapper<F, T> { T map(F input); }
• Используй при преобразовании одного типа в другой (например, DTO → сущность).
13. Нельзя использовать примитивы
• Нельзя List<int> — только List<Integer>.
• Используй обёртки (коллекции могут хранить только объекты, не примитивы).
14. Нельзя создавать массивы с обобщением
• new T[] не работает.
• Используй List<T> вместо (например, динамические коллекции).
15. Нельзя использовать подстановочные типы для вставки
• Нельзя вставлять в List<? extends Number>.
• Используй <? super Number>, если нужна вставка (например, для пакетной обработки или модификации коллекции).
Подписывайся на наш канал в Max 🟪Ctrl + Shift + T (на Windows/Linux) или Cmd + Shift + T (на macOS).
— Выберите, какой тестовый фреймворк использовать (JUnit, TestNG и т.д.), и IDEA предложит создать тестовый класс с нужной структурой.
IDE автоматически создаст тестовый класс с методами для проверки каждого (или выбранного) публичного метода.
Подписывайся на наш канал в Max 🟪UnrecognizedPropertyException.
Чтобы этого избежать и не ломать API, добавь аннотацию:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDTO {
private String name;
private int age;
}
Подписывайся на наш канал в Max 🟪livelock?
Ответ: livelock — тип взаимной блокировки, при котором несколько потоков выполняют бесполезную работу, попадая в зацикленность при попытке получения каких-либо ресурсов.
Реальный пример livelock — когда два человека встречаются в узком коридоре и каждый, пытаясь быть вежливым, отходит в сторону, и так они бесконечно двигаются из стороны в сторону.
Подписывайся на наш канал в Max 🟪
Available now! Telegram Research 2025 — the year's key insights 
