Использование интерфейса Callable вместе с классом Future для выполнения асинхронных задач и получения их результата
ExecutorService executor = null;
try {
executor = Executors.newFixedThreadPool(1);
Future<Integer> futureResult = executor.submit(() -> {
// Выполнение сложной вычислительной задачи
int result = 0;
for (int i = 0; i < 100; i++) {
result += i;
Thread.sleep(100);
}
return result;
});
// Другие действия, выполняемые параллельно
// Ожидание завершения асинхронной задачи и получение результата
Integer result = futureResult.get();
System.out.println("Результат: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
if (executor != null) executor.shutdown();
}
...
Читать дальшеПараллельное выполнение задач с использованием ExecutorService
ExecutorService - это интерфейс, который предоставляет удобный способ для управления параллельным выполнением задач. Он предоставляет пул потоков для выполнения задач и управляет их жизненным циклом:
...
Читать дальшеИспользование лямбда-выражений для упрощения написания анонимных классов
Как полезную фишку в Java можно рассмотреть использование лямбда-выражений для упрощения написания анонимных классов. Например, использование лямбда-выражения для выполнения операции над элементами коллекции:
...
Читать дальшеИспользование StringBuilder для эффективной конкатенации строк
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) {
sb.append("строка ").append(i).append("\n");
}
String result = sb.toString();
System.out.println(result);
}
}
...
Читать дальшеИспользование интерфейсов для множественного наследования
В данном коде используются интерфейсы для реализации множественного наследования. Класс MyClass реализует два интерфейса Printable и Showable, и поэтому класс может использовать методы, определенные в обоих интерфейсах. Это позволяет создавать гибкие и модульные программы, используя механизм интерфейсов в Java.
...
Читать дальшеСоздание итератора для пользовательского класса
Этот код позволяет создать итератор для пользовательского класса CustomClass. Итератор позволяет перебирать элементы массива elements и использовать их в цикле for-each.
...
Читать дальшеArray vs ArrayList
Выбор между Array и ArrayList зависит от специфики задачи на Java, которую требуется решить.
📌 Помните о следующих особенностях этих типов:
• Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayLists может динамически изменяться.
...
Читать дальшеJSON
JSON – невероятно удобный и полезный формат для хранения и обмена данными. Java полностью поддерживает его.
Сериализовать данные можно так:
JSONObject author = new JSONObject();
author.put("name", "J. K. Rowling");
author.put("numberOfBooks", 22);
JSONArray books = new JSONArray();
books.put("Harry Potter and the Philosopher's Stone");
books.put("Harry Potter and the Chamber of Secrets");
books.put("Harry Potter and the Prisoner of Azkaban");
author.put("books", books);
System.out.print(author);
...
Читать дальшеМетоды и конструкторы в enum
Перечисления (enum) — это классы Java, определяющие наборы констант. Самый простой enum выглядит так:
public enum Vehicle { CAR, BUS, BICYCLE, SCOOTER }
...
Читать дальшеИспользование аннотаций
Аннотации позволяют добавлять метаданные к вашему коду, что может быть полезно для документирования, тестирования и других целей. Вот пример использования аннотации:
...
Читать дальше