Easy Java (@EasyJava_23) — Telegram-канал | Telegram Dialogs
Все каналы
Easy Java

Easy Java

@EasyJava_23

5.1K подписчиков технологии

Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy

Последние публикации

Easy Java
27.06.2026 15:00 · 👁 803
👩‍💻 Викторина: что выведет код? class Parent { static int a = initA(); static int initA() { System.out.print("P "); return 1; } Parent() { System.out.print("p "); } } class Child extends Parent { static int b = initB(); static int initB() { System.out.print("C "); return 2; } Child() { System.out.print("c "); } } public class Main { public static void main(String[] args) { new Child(); } } ➡️ Easy Java | #Викторина
Easy Java
19.06.2026 15:00 · 👁 1.1K
👩‍💻 A2A Java SDK 1.0.0: стабильный релиз для агентных приложений на Java Официальный Java SDK для протокола Agent2Agent достиг версии 1.0.0. Теперь Java-разработчики могут строить агентные приложения, которые взаимодействуют с агентами на других языках и фреймворках. Agent2Agent — это протокол, управляемый Linux Foundation (изначально представленный Google), который позволяет агентам на разных фреймворках и языках находить друг друга, делегировать задачи и обмениваться результатами. ⛓ Подробнее в статье ➡️ Easy Java | #Статья
Easy Java
12.06.2026 15:00 · 👁 1.2K
Ну, а как по другому… ➡️ Easy Java | #мем
Easy Java
05.06.2026 15:00 · 👁 1.4K
👩‍💻 Что такое ThreadLocal.withInitial() и зачем он нужен? Это статический метод для создания ThreadLocal переменной с фабрикой начального значения. Каждый поток получает свою собственную копию объекта, а withInitial задаёт ленивый способ её создания — при первом вызове get(). ⚡️ Пример: import java.text.SimpleDateFormat; import java.util.concurrent.*; public class ThreadLocalExample { // Безопасный форматтер без синхронизации private static final ThreadLocal<SimpleDateFormat> dateFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd")); public static void main(String[] args) throws Exception { ExecutorService pool = Executors.newFixedThreadPool(3); for (int i = 0; i < 5; i++) { final int taskId = i; pool.submit(() -> { String formatted = dateFormat.get().format(new java.util.Date()); System.out.println(Thread.currentThread().getName() + " -> " + formatted + " (task " + taskId + ")"); }); } pool.shutdown(); } } Особенно полезен при хранении не потокобезопасных объектов (SimpleDateFormat, Random), изоляции пользовательской сессии/токена в вебе, переиспользовании тяжелых ресурсов без синхронизации. ➡️ Easy Java | #Теория
Easy Java
30.05.2026 15:00 · 👁 1.4K
👩‍💻 Викторина: что выведет код? class Parent { static String show() { return "Parent"; } String print() { return show(); } } class Child extends Parent { static String show() { return "Child"; } } public class Main { public static void main(String[] args) { Parent p = new Child(); System.out.println(p.print()); } } ➡️ Easy Java | #Викторина
Easy Java
23.05.2026 19:30 · 👁 1.7K
👩‍💻 Качество кода в эпоху AI: как не утонуть в багах и уязвимостях Автор разбирает, почему внедрение AI может снижать продуктивность, раздувать время ревью и плодить уязвимости. И главное — как это лечить не магическими промптами, а инженерным пайплайном: SDD, TDD, узкие AI-ревьюеры, property-based testing и связка LLM с формальными анализаторами. ⛓ Читаем статью по ссылке ➡️ Easy Java | #Статья
Easy Java
18.05.2026 09:08 · 👁 1.8K
Не тимлид, а тимлидище ➡️ Easy Java | #Мем
Easy Java
14.05.2026 11:01 · 👁 1.8K
👩‍💻 Что такое Phaser в Java и зачем он нужен? Phaser — это продвинутый синхронизатор из java.util.concurrent, который позволяет потокам координироваться по фазам выполнения. В отличие от CountDownLatch и CyclicBarrier, он гибче: количество участников можно динамически добавлять и убирать. • Поддерживает несколько фаз • Гибко управляет количеством потоков • Удобен для пошаговых алгоритмов ⚡️ Пример: import java.util.concurrent.Phaser; public class Main { public static void main(String[] args) { Phaser phaser = new Phaser(3); Runnable task = () -> { System.out.println(Thread.currentThread().getName() + " — фаза 1"); phaser.arriveAndAwaitAdvance(); System.out.println(Thread.currentThread().getName() + " — фаза 2"); }; new Thread(task).start(); new Thread(task).start(); new Thread(task).start(); } } 👀 Phaser особенно полезен для задач с несколькими этапами синхронизации — например, симуляций, параллельных вычислений или координации батчевых операций ➡️ Easy Java | #Теория
Easy Java
09.05.2026 15:00 · 👁 1.4K
👩‍💻 Викторина: что выведет код? public class Main { static int x = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { for (int i = 0; i < 1000; i++) x++; }); Thread t2 = new Thread(() -> { for (int i = 0; i < 1000; i++) x++; }); t1.start(); t2.start(); Thread.sleep(100); System.out.print(x); } } ➡️ Easy Java | #Викторина
Easy Java
03.05.2026 15:00 · 👁 1.7K
👩‍💻 Что такое Stream.peek() и зачем он нужен? peek() — это промежуточный метод стримов, который позволяет выполнить произвольное действие над каждым элементом без изменения самих элементов. Классический use case: отладка пайплайнов, логирование, заполнение внешних коллекций. ⚡️ Пример: import java.util.*; import java.util.stream.*; public class PeekExample { public static void main(String[] args) { List<String> log = new ArrayList<>(); List<String> result = Stream.of("java", "python", "rust") .peek(s -> System.out.println("До фильтра: " + s)) .filter(s -> s.length() > 3) .peek(s -> System.out.println("После фильтра: " + s)) .map(String::toUpperCase) .peek(log::add) // побочный эффект .collect(Collectors.toList()); System.out.println("Результат: " + result); System.out.println("Лог: " + log); } } Особенно полезен при откладке длинных стрим-пайплайнов, логировании промежуточных этапов, сборке метрик или статистики, побочных эффектах в тестовых сценариях. ➡️ Easy Java | #Теория
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.