Java Learning – Telegram
Java Learning
18.3K subscribers
1.62K photos
2 videos
3 files
1K links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://news.1rj.ru/str/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
⚙️ Thread.yield()

Метод Thread.yield() сообщает планировщику потоков, что текущий поток готов уступить процессор другим потокам того же приоритета. Это полезно для управления многопоточными задачами без блокировок.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Вопрос на собеседовании

Что такое ThreadLocal в Java, и зачем он нужен?

Ответ ⬇️
ThreadLocal — это механизм, который позволяет каждому потоку хранить своё собственное значение переменной, изолированное от других потоков. Это полезно для управления состоянием в многопоточных приложениях, например, при хранении информации о текущем пользователе в веб-приложениях.

Пример использования ⚙️
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()

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
⚙️ MethodHandles.dropArguments()

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()

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()

Locale.getDefault() позволяет получить текущую локаль системы, что полезно для работы с форматированием дат, чисел и текста.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚙️ Thread.getState()

Thread.getState() позволяет получить текущее состояние потока. Это полезно при отладке многопоточных программ, чтобы отслеживать, выполняется ли поток, заблокирован или завершён.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
⚙️ ProcessHandle.isAlive()

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
⚙️ Charset.forName()

Charset.forName() позволяет получить кодировку по её названию и использовать её для преобразования строк. Это полезно при работе с различными кодировками, например, UTF-8, ISO-8859-1 и Windows-1251.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
⚙️ ScopedValue.where()

ScopedValue.where() позволяет безопасно передавать контекстные данные внутри потока, избегая утечек памяти и сложностей ThreadLocal. Данные доступны только внутри заданного блока кода.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
⚙️ JLine TerminalBuilder.build()

TerminalBuilder.build() из библиотеки JLine позволяет создавать интерактивные терминалы с поддержкой ANSI-цветов, автодополнения и управления вводом. Это полезно для создания CLI-приложений с удобным интерфейсом.

🔗 Документация

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🚫 Антипаттерн недели: Неиспользование try-with-resources при работе с ресурсами

В Java важно гарантированно закрывать ресурсы (файлы, потоки, соединения). Если этого не делать, возможны утечки памяти и зависание приложения.

✔️ Используйте try-with-resources, чтобы автоматически закрывать ресурсы.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
⚙️ AnsiConsole.out.println()

AnsiConsole.out.println() из библиотеки Jansi позволяет выводить цветной текст в консоль, упрощая создание стилизованных CLI-приложений с поддержкой ANSI-escape последовательностей.

🔗 Документация

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
⚙️ Lombok @SuperBuilder

@SuperBuilder из библиотеки Lombok упрощает создание объектов с помощью паттерна "Builder" и поддерживает наследование, избавляя от лишнего кода при создании сложных иерархий классов.

🔗 Документация

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19