Easy Java
Kanalga Telegram’da o‘tish
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
Ko'proq ko'rsatish4 939
Obunachilar
+424 soatlar
-177 kun
-1830 kun
Postlar arxiv
4 939
❓ Вопрос с собеса
Что такое Callable в Java и чем он отличается от Runnable?
Пример🔽
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> task = () -> {
Thread.sleep(500);
return 7 * 6;
};
Future<Integer> future = executor.submit(task);
System.out.println("Результат: " + future.get()); // ➔ 42
executor.shutdown();
}
}
Ответ🔽
Runnable — это интерфейс для задач, которые выполняются в отдельном потоке, но не возвращают результат и не могут выбрасывать проверяемые исключения. Callable<V> — это интерфейс для задач, которые возвращают результат (V) и могут выбрасывать исключения. 📌 Основные отличия: — Runnable.run() → void, без checked-исключений — Callable.call() → V, может выбросить checked-исключения — Callable всегда используется вместе с Future для получения результата➡️ Easy Java | #Собес
4 939
Подборка каналов IT от наших друзей:
🦥 Lazy_Programmer – Для ленивых
🎬 videos_it — База видеоуроков по IT
🐧 Linux_Club — Для Linuxоидов
📔 BOOKS — Читать не перечитать
🇷🇺 our_computer — У нас как в СССР
🔐 LazySecurity — Канал по ИБ
🤩 iwannabeprogrammer — IT-мемы
🔥 floppydisky — ITUMOR
📱 codebase_frontend — Красим кнопки
➡️ LazyDevOps — Канал для дев и псов
🐈⬛️ LazyTester — Протестируй канал!
4 939
❓ Вопрос с собеса
Что такое Callable в Java и чем он отличается от Runnable?
Пример🔽
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> task = () -> {
Thread.sleep(500);
return 7 * 6;
};
Future<Integer> future = executor.submit(task);
System.out.println("Результат: " + future.get()); // ➔ 42
executor.shutdown();
}
}
Ответ🔽
Runnable — это интерфейс для задач, которые выполняются в отдельном потоке, но не возвращают результат и не могут выбрасывать проверяемые исключения. Callable<V> — это интерфейс для задач, которые возвращают результат (V) и могут выбрасывать исключения. 📌 Основные отличия: — Runnable.run() → void, без checked-исключений — Callable.call() → V, может выбросить checked-исключения — Callable всегда используется вместе с Future для получения результата➡️ Easy Java | #Собес
4 939
🤔 Слишком поздно заходить в IT в 2025?
Врать не буду, скорее да, чем нет: за последние пять лет порог вхождения сильно поднялся, и теперь нередко от джуна требуют навыки грейдом выше.
Что делать в такой ситуации? Учиться эффективнее остальных и знать, как подать себя на рынке других. Разобраться со всем этим вам поможет База Знаний — место, где за вас уже отобрали лучшие материалы по самым востребованным вакансиям:
🖥 Python Dev – 1558+ материалов
👩💻 Frontend Dev – 1241+ материалов
👩💻 Backend Dev – 1095+ материалов
📊 Data Scientist – 978+ материалов
🎨 UX/UI Designer – 885+ материалов
🤖 Нейросети – 824+ материалов
📖 Книги по IT – 779+ материалов
Советую перейти и начать учиться уже сейчас — так уже через пару месяцев сможете претендовать на вакансию c хорошим окладом 👍
4 939
📚 Сотни курсов и книг по всем направлениям 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 ГБ — Другие направления
👉 Успей забрать, пока не удалили
4 939
📖 JEP 502 — Stable Values. Новая фича из Java 25
Stable Values - новая возможность, которая появится в Java 25 — следующем LTS-релизе, намеченном на сентябрь.
⛓ Читать статью
➡️ Easy Java | #Статья
4 939
👩💻 Что такое 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 | #Теория
4 939
VK JT = Java + Go!
16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.
В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.
🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
4 939
❓ Вопрос с собеса
Что такое 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 | #Собес
4 939
📖 Как прокачать Java-приложения без миграции: Axiom JDK Express теперь на JVM 21
Мы знаем, как это бывает: проект на Java 8 живёт уже десятый год, релизить страшно, тестов мало, миграция пугает, а система критичная. И вот бизнес хочет «ускорить и не трогать».
⛓ Читать статью
➡️ Easy Java | #Статья
4 939
⚡️ Айтишник из «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 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
4 939
👩💻 Что такое 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 | #Теория
