Что такое
volatile в Java и в каких случаях его следует использовать?Ответ
Однако volatile не заменяет блокировку (synchronized) и не обеспечивает атомарности операций. Его рекомендуется использовать для переменных, доступ к которым происходит через чтение/запись, но не требует сложной синхронизации, например, для флагов или индикаторов состояния.
Пример использования
public class VolatileExample {
private volatile boolean flag = true;
public void run() {
new Thread(() -> {
while (flag) {
System.out.println("Работаем...");
}
System.out.println("Остановка");
}).start();
try {
Thread.sleep(1000);
flag = false; // изменение станет сразу видимым для первого потока
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
public static void main(String[] args) {
new VolatileExample().run();
}
}
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3
В Java метод
Path.resolve() из пакета java.nio.file соединяет два пути, создавая новый путь. Если второй путь является абсолютным, он возвращается как есть. Это полезно для работы с относительными путями в файловой системе.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Records
Java Learning👩💻
Records — это новый тип данных, добавленный в Java 14, который позволяет определить класс с набором свойств, аналогичных полям класса, но неизменяемых и доступных только для чтения. Они предоставляют удобный способ объявления простых неизменяемых объектов с сокращенным синтаксисом.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Ratpack — это асинхронный фреймворк для разработки веб-приложений и API на Java. Он использует неблокирующую модель ввода-вывода, что делает его идеальным для создания высоконагруженных систем.
• Асинхронность на основе Netty для высокой производительности.• Интуитивно понятный DSL для описания маршрутов и логики.• Отличная интеграция с Gradle и другими инструментами.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Пояснение
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Ответ:
Anonymous Quiz
26%
Static method in interface
68%
Ошибка компиляции
3%
Ничего не выведет
4%
Static method in Test
👍11
В Java метод
Stream.reduce() выполняет свёртку элементов потока в одно значение, используя заданную ассоциативную функцию. Это мощный инструмент для операций, таких как суммирование, произведение или объединение.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
В Java метод
Objects.requireNonNull() проверяет, что объект не равен null, и выбрасывает NullPointerException, если проверка не пройдена. Это удобный способ защитить код от неожиданных null.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Pebble — это гибкий и производительный движок шаблонов, который позволяет легко интегрировать динамический HTML в ваши приложения. Разработанный с акцентом на расширяемость и безопасность, Pebble поддерживает удобный синтаксис, похожий на Twig.
• Компактный синтаксис: интуитивно понятный синтаксис для построения шаблонов.• Шаблоны высокого уровня: поддержка наследования и макросов.• Безопасность: автоматическое экранирование HTML и поддержка WhiteList-фильтров.• Расширяемость: добавление пользовательских функций и фильтров.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Напишите функцию, которая проверяет, сбалансированы ли круглые, фигурные и квадратные скобки в заданной строке. Сбалансированность означает, что каждая открывающая скобка имеет соответствующую закрывающую, и скобки вложены корректно.
Пример:
"{[()()]}"
true
"{[(])}"
falseРешение задачи на картинке
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🎄1
Пояснение
Переменные sb1 и sb2 ссылаются на один и тот же объект StringBuilder. При вызове метода append изменения вносятся непосредственно в этот объект.
• sb1.append(" World") добавляет " World" к строке, делая её "Hello World".
• Затем sb2.append("!") добавляет "!" к той же строке, получая "Hello World!".
Так как объект изменяется напрямую, при выводе обе переменные показывают результат "Hello World!".
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Ответ:
Anonymous Quiz
4%
Hello и Hello
8%
Hello World и Hello World
81%
Hello World! и Hello World!
8%
Ошибка компиляции
👍9
В Java метод
Math.max() позволяет найти большее из двух чисел. Он работает с различными типами данных, такими как int, double, float, и полезен в задачах сравнения.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
В Java метод
List.of() позволяет быстро создать неизменяемый список. Это удобно для создания небольших коллекций с фиксированным набором элементов.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Друзья, планирую в историях публиковать разбор задачек с собеседований с подробными пояснениями от Senior Java разработчика из Яндекса, а также различные смешные мемасики.
Проголосуйте пожалуйста👩💻
https://t.iss.one/boost/Java_per_month
Проголосуйте пожалуйста
https://t.iss.one/boost/Java_per_month
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥40🔥7
В Java метод
Arrays.binarySearch() выполняет бинарный поиск в отсортированном массиве, возвращая индекс найденного элемента. Если элемент не найден, возвращается отрицательное значение, указывающее потенциальную позицию вставки.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
В Java метод
Comparator.reverseOrder() создаёт компаратор, который сортирует элементы в порядке убывания. Это удобно для работы с сортировкой коллекций, когда нужно изменить стандартный порядок.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Как работает
CompletableFuture в Java, чем он отличается от Future, и как использовать метод thenCombine() для выполнения параллельных задач?Ответ
Пример использования
import java.util.concurrent.CompletableFuture;
public class Main {
public static void main(String[] args) {
// Первая асинхронная задача
CompletableFuture<Integer> task1 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000); // Эмуляция задержки
} catch (InterruptedException e) {
e.printStackTrace();
}
return 10;
});
// Вторая асинхронная задача
CompletableFuture<Integer> task2 = CompletableFuture.supplyAsync(() -> 20);
// Комбинируем результаты двух задач
CompletableFuture<Integer> combined = task1.thenCombine(task2, Integer::sum);
// Получаем и выводим результат
combined.thenAccept(result -> System.out.println("Сумма: " + result));
// Ждем завершения всех задач (только для примера)
combined.join();
}
}
// Результат выполнения:
// Сумма: 30
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Semaphore
Semaphore — это класс, который позволяет ограничивать количество потоков, одновременно работающих с каким-либо ресурсом.
Поток должен получить разрешение, чтобы войти в критическую секцию.
Если разрешений нет, поток ставится в очередь до освобождения.
Метод
Java Learning 👩💻
Semaphore — это класс, который позволяет ограничивать количество потоков, одновременно работающих с каким-либо ресурсом.
Поток должен получить разрешение, чтобы войти в критическую секцию.
Semaphore управляет набором разрешений (permits), а конструктор принимает количество разрешений.Если разрешений нет, поток ставится в очередь до освобождения.
Метод
acquire() получает разрешение, release() — освобождает.Java Learning 👩💻
👍8
ZipFile
Java Learning 👩💻
ZipFile — это класс, который используется для чтения содержимого ZIP-архивов. Он позволяет вам перебирать записи в архиве, получать информацию о них и извлекать их содержимое.Java Learning 👩💻
👍4