Ответ
В Java есть несколько основных способов для асинхронной работы:
- Threads - базовый механизм:
new Thread(() -> {
// Асинхронный код
}).start();
- ExecutorService - пул потоков:
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> {
// Асинхронная задача
});
- Future/Callable - получение результата:
Future<String> future = executor.submit(() -> "Результат");
String result = future.get(); // Блокирующий вызов
- CompletableFuture (Java 8+) - более гибкий подход:
CompletableFuture.supplyAsync(() -> "Данные")
.thenApplyAsync(data -> data + " обработаны")
.thenAccept(System.out::println);
- RxJava - реактивное программирование:
Observable.just("Hello")
.subscribeOn(Schedulers.io())
.subscribe(System.out::println);
Для Android дополнительно есть:
- Handler/Looper
- AsyncTask (устарел)
- Kotlin Coroutines (рекомендуемый способ)