Метод
ProcessHandle.onExit() позволяет отслеживать завершение внешнего процесса в асинхронном режиме. Это полезно для управления запущенными процессами и выполнения действий после их завершения.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Как работает Virtual Threads (виртуальные потоки) в Java, и чем они отличаются от обычных потоков (
Thread)?Ответ
Использование виртуальных потоков значительно улучшает производительность приложений, выполняющих множество операций ввода-вывода (например, сетевые запросы).
Пример использования
public class VirtualThreadsExample {
public static void main(String[] args) {
try (var executor = java.util.concurrent.Executors.newVirtualThreadPerTaskExecutor()) {
for (int i = 0; i < 10; i++) {
executor.submit(() -> {
System.out.println(Thread.currentThread());
});
}
}
}
}
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥2
== для сравнения строкВ Java строки (
String) — это объекты, а оператор == сравнивает ссылки, а не их содержимое. Это может привести к неожиданным ошибкам при сравнении строк, особенно если строки создаются динамически.equals(), который сравнивает содержимое строк, а не ссылки.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😁10❤🔥1🎄1
Метод
java.util.Timer() позволяет создавать таймеры, которые выполняют определенные задачи через заданные интервалы времени. Это полезно для планирования и отложенного выполнения задач без блокировки основного потока.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Метод
Thread.yield() сообщает планировщику потоков, что текущий поток готов уступить процессор другим потокам того же приоритета. Это полезно для управления многопоточными задачами без блокировок.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Что такое ThreadLocal в Java, и зачем он нужен?
Ответ
Пример использования
public class ThreadLocalExample {
private static final ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);
public static void main(String[] args) {
Runnable task = () -> {
threadLocal.set((int) (Math.random() * 100));
System.out.println(Thread.currentThread().getName() + ": " + threadLocal.get());
};
new Thread(task).start();
new Thread(task).start();
}
}
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
ProcessHandle.children() возвращает поток (Stream<ProcessHandle>) дочерних процессов текущего процесса. Это полезно для мониторинга запущенных подпроцессов и управления ими.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1😢1
Пояснение
Метод split(",") разделяет строку "apple,banana,orange" по запятой, создавая массив ["apple", "banana", "orange"]. Длина массива — 3, а элемент fruits[1] — "banana". Код выполняется без ошибок.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
👍9
MethodHandles.dropArguments() создаёт MethodHandle, который игнорирует определённые аргументы перед вызовом целевой функции. Это полезно для адаптации методов с разными сигнатурами.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Пояснение
Код в try выбрасывает ArithmeticException. Блок catch перехватывает исключение и выполняется. finally выполняется всегда, независимо от исключений. Код корректен.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
StackWalker.getInstance() позволяет получать информацию о стеке вызовов во время выполнения программы, упрощая отладку и логирование.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
null вместо OptionalВ Java часто используют
null для обозначения отсутствия значения, но это может привести к NullPointerException и усложнить код.Optional, чтобы избежать null и сделать код безопаснее.Optional явно показывает, что значение может отсутствовать.null-проверок и улучшает читаемость кода.map(), orElse()).Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤🔥4
Locale.getDefault() позволяет получить текущую локаль системы, что полезно для работы с форматированием дат, чисел и текста.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Thread.getState() позволяет получить текущее состояние потока. Это полезно при отладке многопоточных программ, чтобы отслеживать, выполняется ли поток, заблокирован или завершён.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
ProcessHandle.isAlive() позволяет проверить, запущен ли процесс в данный момент. Это полезно при мониторинге фоновых процессов и управлении системными ресурсами.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Пояснение
Optional.ofNullable(null) создаёт пустой Optional. Метод orElse("Default Value") возвращает "Default Value", так как внутри Optional нет значения. Код выполняется без ошибок.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤🔥1
👍6
Charset.forName() позволяет получить кодировку по её названию и использовать её для преобразования строк. Это полезно при работе с различными кодировками, например, UTF-8, ISO-8859-1 и Windows-1251.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
ScopedValue.where() позволяет безопасно передавать контекстные данные внутри потока, избегая утечек памяти и сложностей ThreadLocal. Данные доступны только внутри заданного блока кода.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11