📚 Асинхронное программирование с
📝 Задание:
Создайте программу, которая будет асинхронно вычислять сумму двух целых чисел. Используйте
🔍 Ответ
Решение:
Объяснение:
В этом примере сначала создаётся асинхронная задача с помощью
#решения #интервью
@code_it
CompletableFuture📝 Задание:
Создайте программу, которая будет асинхронно вычислять сумму двух целых чисел. Используйте
CompletableFuture для выполнения вычислений в отдельных потоках. После получения результата сумма должна быть умножена на 2, и окончательный результат выведен на экран.🔍 Ответ
Решение:
import java.util.concurrent.CompletableFuture;
public class AsyncSumExample {
public static void main(String[] args) {
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
int a = 5;
int b = 10;
System.out.println("Суммируем числа: " + a + " и " + b);
return a + b;
});
CompletableFuture<Integer> resultFuture = future.thenApply(sum -> {
System.out.println("Умножаем сумму на 2: " + sum);
return sum * 2;
});
int result = resultFuture.join();
System.out.println("Результат: " + result);
}
}
Объяснение:
В этом примере сначала создаётся асинхронная задача с помощью
supplyAsync(), которая суммирует два числа. Затем с помощью метода thenApply() результат этой задачи используется для умножения суммы на 2. Финальный результат выводится на экран после завершения всех задач. Метод join() ожидает завершения всех задач и возвращает итоговый результат.#решения #интервью
@code_it
1🔥4👍1👏1
https://t.me/catizenbot/bombie?startapp=g_1002_410075
Wondering how much $BOMBIE you can earn?
#реклама
Wondering how much $BOMBIE you can earn?
#реклама
Telegram
Bombie
🕹️Kill Zombie,Earn $Bombie!
🎁Get airdrops right now!
🎁Get airdrops right now!
📚 Интерфейс
Теория:
В Java для работы с асинхронными задачами и многопоточностью часто используется интерфейс
Основные различия между
1.
2.
Чтобы получить результат выполнения асинхронной задачи, используется интерфейс
Пример использования
В этом примере задача, возвращающая сумму двух чисел, выполняется асинхронно с использованием интерфейса
Почему и когда использовать
- Возвращаемый результат: Когда нужно выполнить задачу в отдельном потоке и получить результат по завершению.
- Обработка исключений:
- Асинхронное выполнение: С помощью
📝 Задание:
Напишите программу, которая выполняет асинхронную задачу с использованием
#задание #интервью
@code_it
Callable и Future в JavaТеория:
В Java для работы с асинхронными задачами и многопоточностью часто используется интерфейс
Runnable, который выполняет задачу без возвращаемого результата. Однако если требуется вернуть результат или бросить исключение, используется интерфейс Callable.Основные различия между
Runnable и Callable:1.
Runnable — не возвращает результат и не бросает исключение.2.
Callable — возвращает результат (тип T) и может бросать проверенные исключения.Чтобы получить результат выполнения асинхронной задачи, используется интерфейс
Future, который хранит результат, возвращаемый Callable. С помощью метода get() можно дождаться завершения задачи и получить её результат.Пример использования
Callable и Future:import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> task = () -> {
System.out.println("Выполняется задача...");
Thread.sleep(2000);
return 10 + 20;
};
Future<Integer> future = executor.submit(task);
try {
System.out.println("Результат: " + future.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}
}
}
В этом примере задача, возвращающая сумму двух чисел, выполняется асинхронно с использованием интерфейса
Callable. Результат возвращается через объект Future.Почему и когда использовать
Callable и Future:- Возвращаемый результат: Когда нужно выполнить задачу в отдельном потоке и получить результат по завершению.
- Обработка исключений:
Callable может бросать проверенные исключения, что упрощает обработку ошибок в многопоточности.- Асинхронное выполнение: С помощью
Future можно отслеживать завершение задачи и использовать результат, не блокируя основной поток.📝 Задание:
Напишите программу, которая выполняет асинхронную задачу с использованием
Callable, вычисляющую факториал числа. Используйте Future для получения результата и выведите его на экран.#задание #интервью
@code_it
1👍4❤1🔥1
📚 Интерфейс
🔍 Ответ
Задание: Напишите программу, которая выполняет асинхронную задачу с использованием
Решение:
Объяснение:
1. Создаётся асинхронная задача, которая вычисляет факториал числа 5.
2. Используется
3. Вывод программы:
#решения #интервью
@code_it
Callable и Future в Java🔍 Ответ
Задание: Напишите программу, которая выполняет асинхронную задачу с использованием
Callable, вычисляющую факториал числа. Используйте Future для получения результата и выведите его на экран.Решение:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class FactorialExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Long> factorialTask = () -> {
long n = 5;
long result = 1;
for (long i = 1; i <= n; i++) {
result *= i;
}
return result;
};
Future<Long> future = executor.submit(factorialTask);
try {
System.out.println("Факториал: " + future.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}
}
}
Объяснение:
1. Создаётся асинхронная задача, которая вычисляет факториал числа 5.
2. Используется
Future для получения результата выполнения задачи. Метод get() блокирует основной поток до завершения задачи.3. Вывод программы:
Факториал: 120
#решения #интервью
@code_it
1👍4❤1🔥1
📚 Optional в Java
Теория:
Основные методы
1. Создание
-
-
-
2. Проверка на присутствие значения:
-
-
3. Получение значения:
-
-
-
-
Пример использования
Почему и когда использовать
- Избегание
- Чтение кода: Использование
- Чистый код: Упрощает код при проверке значений на
📝 Задание:
Создайте программу, которая использует
#задание #интервью
@code_it
Теория:
Optional — это контейнер, который появился в Java 8 и используется для работы с потенциально отсутствующими значениями. Он помогает избежать NullPointerException, предоставляя более удобный способ работы с объектами, которые могут быть null.Основные методы
Optional:1. Создание
Optional:-
Optional.of(value) — создаёт Optional с не-null значением.-
Optional.empty() — создаёт пустой Optional.-
Optional.ofNullable(value) — создаёт Optional, который может содержать либо значение, либо быть пустым, если значение равно null.2. Проверка на присутствие значения:
-
isPresent() — возвращает true, если значение присутствует.-
isEmpty() — возвращает true, если значение отсутствует (Java 11+).3. Получение значения:
-
get() — возвращает значение, если оно присутствует, иначе бросает NoSuchElementException.-
orElse(defaultValue) — возвращает значение, если оно присутствует, иначе возвращает defaultValue.-
orElseGet(supplier) — возвращает значение, если оно присутствует, иначе вызывает указанный Supplier.-
orElseThrow() — возвращает значение, если оно присутствует, иначе бросает исключение.Пример использования
Optional:import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable(null);
// Проверка наличия значения и вывод
optional.ifPresentOrElse(
value -> System.out.println("Значение: " + value),
() -> System.out.println("Значение отсутствует")
);
}
}
Почему и когда использовать
Optional:- Избегание
NullPointerException: Optional помогает избежать прямой работы с null, что делает код более надёжным.- Чтение кода: Использование
Optional делает намерения разработчика явными, особенно когда метод может возвращать значение или пустое состояние.- Чистый код: Упрощает код при проверке значений на
null, улучшая читаемость и поддерживаемость.📝 Задание:
Создайте программу, которая использует
Optional для обработки имени пользователя. Если имя null, то программа должна вывести сообщение "Имя отсутствует". Если имя присутствует, программа должна вывести его в верхнем регистре.#задание #интервью
@code_it
1👍6❤3🔥1
Конкурс!!!
На первый раз правила очень простые - в комментариях к этому посту расскажите о своем пути в ИТ - с чего вы начинали, как учились, каковы ваши успехи на данный момент.
В следующий понедельник утром среди тех, кто оставил комментарий с описанием случайным образом будет выбран один человек, который и получит приз.
В этот раз участвуют только те, кто подписан на этот Телеграм канал, так что шансы достаточно высоки. В следующий раз подобный конкурс будет на YouTube, соответственно, участников будет гораздо больше
На первый раз правила очень простые - в комментариях к этому посту расскажите о своем пути в ИТ - с чего вы начинали, как учились, каковы ваши успехи на данный момент.
В следующий понедельник утром среди тех, кто оставил комментарий с описанием случайным образом будет выбран один человек, который и получит приз.
В этот раз участвуют только те, кто подписан на этот Телеграм канал, так что шансы достаточно высоки. В следующий раз подобный конкурс будет на YouTube, соответственно, участников будет гораздо больше
🔥9❤1👍1👏1
Всем спасибо за истории, сегодня подведем итоги. 8 участников, 12.5% шанс выиграть, совсем неплохо! В каждой бы лотерее так 😁
🍾3🔥2
📚 Optional в Java
📝 Задание:
Создайте программу, которая использует
Решение:
Объяснение:
1. Используем
2. Метод
3.
Вывод программы:
Если значение переменной
#решения #интервью
@code_it
📝 Задание:
Создайте программу, которая использует
Optional для обработки имени пользователя. Если имя null, то программа должна вывести сообщение "Имя отсутствует". Если имя присутствует, программа должна вывести его в верхнем регистре.Решение:
import java.util.Optional;
public class UserNameExample {
public static void main(String[] args) {
String name = null;
Optional<String> optionalName = Optional.ofNullable(name);
String result = optionalName
.map(String::toUpperCase)
.orElse("Имя отсутствует");
System.out.println(result);
}
}
Объяснение:
1. Используем
Optional.ofNullable() для создания Optional, который может содержать null.2. Метод
map() применяет преобразование к значению, если оно присутствует, в данном случае — преобразование строки в верхний регистр.3.
orElse() возвращает заданное сообщение "Имя отсутствует", если значение отсутствует.Вывод программы:
Имя отсутствует
Если значение переменной
name не равно null, программа выведет имя в верхнем регистре.#решения #интервью
@code_it
👍5
📚 Java I/O — BufferedReader и BufferedWriter
Теория:
В Java классы
Основные концепции
1. BufferedReader:
Класс
Почему и когда использовать буферизованные потоки:
- Производительность:
- Построчное чтение:
- Экономия ресурсов: За счёт буферизации уменьшается нагрузка на ресурсы, улучшая производительность программ с интенсивным вводом-выводом.
📝 Задание:
Напишите программу, которая считывает список имён из файла
#задание #интервью
@code_it
Теория:
В Java классы
BufferedReader и BufferedWriter обеспечивают эффективную работу с вводом и выводом, особенно при работе с файлами. Они используют буферизацию, что позволяет ускорить чтение и запись больших объёмов данных, уменьшая количество обращений к файловой системе.Основные концепции
BufferedReader и BufferedWriter:1. BufferedReader:
Класс
BufferedReader считывает текст из символьного потока, используя буферизацию для эффективного чтения строк, массивов или символов. Особенно полезен для работы с большими файлами.java
java
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
2. BufferedWriter:
Класс BufferedWriter записывает текст в выходной поток, используя буферизацию для более эффективной записи данных. Он особенно полезен для записи большого объёма текста.
java
java
try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
writer.write("Привет, мир!");
} catch (IOException e) {
e.printStackTrace();
}
Почему и когда использовать буферизованные потоки:
- Производительность:
BufferedReader и BufferedWriter отлично подходят для работы с большими текстовыми файлами, так как буферизация снижает количество операций ввода-вывода.- Построчное чтение:
BufferedReader позволяет легко обрабатывать данные построчно, что упрощает работу с файлами.- Экономия ресурсов: За счёт буферизации уменьшается нагрузка на ресурсы, улучшая производительность программ с интенсивным вводом-выводом.
📝 Задание:
Напишите программу, которая считывает список имён из файла
names.txt, а затем записывает эти имена в файл output.txt, добавляя к каждому строку "Привет, " перед именем.#задание #интервью
@code_it
📚 Java I/O — BufferedReader и BufferedWriter
📝 Задание:
Напишите программу, которая считывает список имён из файла names.txt, а затем записывает эти имена в файл output.txt, добавляя к каждому строку "Привет, " перед именем.
🔍 Решение
Задание: Напишите программу, которая считывает список имён из файла names.txt, а затем записывает эти имена в файл output.txt, добавляя к каждому строку "Привет, " перед именем.
Решение:
Объяснение:
Сначала мы создаём BufferedReader для чтения из файла names.txt и BufferedWriter для записи в файл output.txt.
Построчно считываем каждое имя и добавляем к нему "Привет, ", а затем записываем результат в output.txt.
Метод newLine() добавляет новую строку после каждой записи, чтобы каждое имя начиналось с новой строки.
#интервью #решения
@code_it
📝 Задание:
Напишите программу, которая считывает список имён из файла names.txt, а затем записывает эти имена в файл output.txt, добавляя к каждому строку "Привет, " перед именем.
🔍 Решение
Задание: Напишите программу, которая считывает список имён из файла names.txt, а затем записывает эти имена в файл output.txt, добавляя к каждому строку "Привет, " перед именем.
Решение:
import java.io.*;
public class GreetingsExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("names.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
String name;
while ((name = reader.readLine()) != null) {
writer.write("Привет, " + name);
writer.newLine();
}
System.out.println("Запись завершена!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Объяснение:
Сначала мы создаём BufferedReader для чтения из файла names.txt и BufferedWriter для записи в файл output.txt.
Построчно считываем каждое имя и добавляем к нему "Привет, ", а затем записываем результат в output.txt.
Метод newLine() добавляет новую строку после каждой записи, чтобы каждое имя начиналось с новой строки.
#интервью #решения
@code_it
1👍3❤1🔥1
Давно у нас не было никаких конкурсов 😔
В этот раз лень что-то придумывать, просто оставляйте комментарий к этому посту и участвуйте в розыгрыше.
Разыгрываем 3 годовых лицензии от JetBrains на любой из их продуктов. 3 победителей будут случайно выбраны из тех, кто оставил комментарий.
Итоги подведем в следующее воскресенье
#конкурс
@code_it
В этот раз лень что-то придумывать, просто оставляйте комментарий к этому посту и участвуйте в розыгрыше.
Разыгрываем 3 годовых лицензии от JetBrains на любой из их продуктов. 3 победителей будут случайно выбраны из тех, кто оставил комментарий.
Итоги подведем в следующее воскресенье
#конкурс
@code_it
❤6👍1
Всем привет!
Подведем итоги конкурса: лецензии достаются @dmitriydmitryy @DanilaKazmiruk @ANiSIMV
Сегодня-завтра напишу победителям и пришлю ключи
Всем остальным спасибо за участие, в феврале будет новый конкурс с возможностью выйграть ключ.
@code_it
Подведем итоги конкурса: лецензии достаются @dmitriydmitryy @DanilaKazmiruk @ANiSIMV
Сегодня-завтра напишу победителям и пришлю ключи
Всем остальным спасибо за участие, в феврале будет новый конкурс с возможностью выйграть ключ.
@code_it
❤3👍3🔥2
С видео затык произошел, много дел навалилось.
В качестве извинения/поощрения подписчиков, давайте разыграем 1 лицензию на любую IDE от JetBrains.
В это воскресенье выберем 1 случайного победителя. Для участия просто оставляем коммент под этим постом
Видео скоро будет. Надеюсь до конца месяца
@code_it
В качестве извинения/поощрения подписчиков, давайте разыграем 1 лицензию на любую IDE от JetBrains.
В это воскресенье выберем 1 случайного победителя. Для участия просто оставляем коммент под этим постом
Видео скоро будет. Надеюсь до конца месяца
@code_it
🔥8
В этот раз приз достается @aeldridg42
всем спасибо за участие, после праздником будет следующий конкурс
@code_it
всем спасибо за участие, после праздником будет следующий конкурс
@code_it
❤2
Мой последний проект, который изначально не должен был попасть на гитхаб, но заказчик передумал и отказался от него.
Может кому будет интересно/полезно
https://github.com/DmitrijsFinaskins/sudoku-generator-jaxafx
Может кому будет интересно/полезно
https://github.com/DmitrijsFinaskins/sudoku-generator-jaxafx
GitHub
GitHub - DmitrijsFinaskins/sudoku-generator-jaxafx: A JavaFX application for generating, solving, and exporting Sudoku puzzles
A JavaFX application for generating, solving, and exporting Sudoku puzzles - DmitrijsFinaskins/sudoku-generator-jaxafx
❤3