E
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 | #Викторина
E
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 | #Статья
E
Easy Java
12.06.2026 15:00 · 👁 1.2K
Ну, а как по другому…
➡️ Easy Java | #мем
E
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 | #Теория
E
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 | #Викторина
E
Easy Java
23.05.2026 19:30 · 👁 1.7K
👩💻 Качество кода в эпоху AI: как не утонуть в багах и уязвимостях
Автор разбирает, почему внедрение AI может снижать продуктивность, раздувать время ревью и плодить уязвимости. И главное — как это лечить не магическими промптами, а инженерным пайплайном: SDD, TDD, узкие AI-ревьюеры, property-based testing и связка LLM с формальными анализаторами.
⛓ Читаем статью по ссылке
➡️ Easy Java | #Статья
E
Easy Java
18.05.2026 09:08 · 👁 1.8K
Не тимлид, а тимлидище
➡️ Easy Java | #Мем
E
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 | #Теория
E
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 | #Викторина
E
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 | #Теория