Easy Java
Ir al canal en Telegram
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
Mostrar más5 037
Suscriptores
-224 horas
-187 días
-7430 días
Archivo de publicaciones
5 037
📚 Сотни курсов и книг по всем направлениям IT и программирования теперь доступны бесплатно:
🤩385 ГБ — Python
🤩229 ГБ — JS, HTML, CSS
🤩422 ГБ — C, C++, C#
🤩147 ГБ — Java, PHP
🤩202 ГБ — Rust, Golang
🤩352 ГБ — Flutter, Kotlin, Swift
🤩108 ГБ — ИИ, Machine Learning
🤩168 ГБ — DevOps, СисАдмин
🤩122 ГБ — Windows, Linux
🤩242 ГБ — БД (SQL и NoSQL)
🤩163 ГБ — QA-тестирование
🤩242 ГБ — ИБ, Хакинг
🤩189 ГБ — Разработка игр
🤩171 ГБ — Разработка ботов
🤩612 ГБ — Собеседования в IT
🤩3942 ГБ — Другие направления
👉 Успей забрать, пока не удалили
5 037
📖 JEP 502 — Stable Values. Новая фича из Java 25
Stable Values - новая возможность, которая появится в Java 25 — следующем LTS-релизе, намеченном на сентябрь.
⛓ Читать статью
➡️ Easy Java | #Статья
5 037
👩💻 Что такое LinkedBlockingQueue в Java и зачем она нужна?
LinkedBlockingQueue — это потокобезопасная очередь из пакета java.util.concurrent, реализованная на связном списке.
Очередь блокирует операции добавления, если достигнут лимит, и операции извлечения, если очередь пуста. Это делает её удобным инструментом для синхронизации потоков.• Поддерживает опциональный лимит размера • Автоматически блокирует при пустой/полной очереди • Идеальна для producer-consumer сценариев ⚡️ Пример:
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) {
BlockingQueue<String> queue = new LinkedBlockingQueue<>(2);
Runnable producer = () -> {
try {
queue.put("task-1");
queue.put("task-2");
System.out.println("Продюсер добавил задачи");
} catch (InterruptedException e) {
e.printStackTrace();
}
};
Runnable consumer = () -> {
try {
System.out.println("Консьюмер обработал: " + queue.take());
System.out.println("Консьюмер обработал: " + queue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
};
new Thread(producer).start();
new Thread(consumer).start();
}
}
👀 LinkedBlockingQueue особенно полезна для построения очередей задач в многопоточных приложениях, ограниченного буферинга и потокобезопасной коммуникации между потоками.➡️ Easy Java | #Теория
5 037
VK JT = Java + Go!
16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.
В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.
🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
5 037
❓ Вопрос с собеса
Что такое Future в Java и какие у него ограничения?
Пример🔽
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(() -> {
Thread.sleep(1000);
return 42;
});
System.out.println("Результат: " + future.get()); // блокируется, пока не готово
executor.shutdown();
}
}
Ответ🔽
Future используется для представления результата асинхронной задачи. С его помощью можно запустить вычисление в отдельном потоке и позже получить результат через get(). Ограничения Future: — нельзя легко комбинировать несколько задач — нет встроенной обработки ошибок — вызов get() блокирует поток, пока результат не готов 📌 Эти ограничения решаются с помощью CompletableFuture, который поддерживает цепочки и реактивный стиль.➡️ Easy Java | #Собес
5 037
📖 Как прокачать Java-приложения без миграции: Axiom JDK Express теперь на JVM 21
Мы знаем, как это бывает: проект на Java 8 живёт уже десятый год, релизить страшно, тестов мало, миграция пугает, а система критичная. И вот бизнес хочет «ускорить и не трогать».
⛓ Читать статью
➡️ Easy Java | #Статья
5 037
⚡️ Айтишник из «VISION» скупил курсы айти школ и выложил гигабайты материалов к себе
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
5 037
👩💻 Что такое PriorityBlockingQueue в Java и зачем она нужна?
PriorityBlockingQueue — это потокобезопасная очередь из java.util.concurrent, которая хранит элементы в отсортированном виде согласно их приоритету.
Она активно используется в задачах, где нужно управлять порядком обработки — например, в планировщиках, системах обработки задач и диспетчерах потоков.• Элементы автоматически сортируются • Работает в многопоточном режиме • Подходит для диспетчеризации задач по приоритету ⚡️ Пример:
import java.util.concurrent.PriorityBlockingQueue;
public class Main {
public static void main(String[] args) {
PriorityBlockingQueue<Integer> queue = new PriorityBlockingQueue<>();
queue.add(5);
queue.add(1);
queue.add(3);
while (!queue.isEmpty()) {
System.out.println(queue.poll()); // ➔ 1, 3, 5
}
}
}
👀 PriorityBlockingQueue особенно полезна, когда задачи имеют приоритеты — например, обработка срочных запросов, планирование задач или распределение ресурсов.➡️ Easy Java | #Теория
5 037
❓ Вопрос с собеса
Что такое ThreadLocal в Java и когда его стоит использовать?
Пример🔽
public class Main {
private static final ThreadLocal<Integer> threadId =
ThreadLocal.withInitial(() -> (int) (Math.random() * 1000));
public static void main(String[] args) {
Runnable task = () ->
System.out.println(Thread.currentThread().getName() + " → " + threadId.get());
new Thread(task, "Поток-1").start();
new Thread(task, "Поток-2").start();
new Thread(task, "Поток-3").start();
}
}
Ответ🔽
ThreadLocal хранит данные отдельно для каждого потока. Даже если переменная одна, каждый поток получает свою копию. 📌 Применения: — хранение пользовательских сессий в веб-приложениях — уникальные ID запросов в логах — объекты, которые нельзя шарить между потоками (например, SimpleDateFormat). Но важно не забывать вызывать remove(), чтобы избежать утечек памяти в пуле потоков.➡️ Easy Java | #Собес
