Асинхронность — это способ выполнения операций, при котором задача запускается, и управление немедленно возвращается к вызывающему коду, позволяя ему выполнять другие задачи, пока начатая операция завершается в фоновом режиме. Результат операции обрабатывается позже. Основные отличия от синхронности:
- Синхронность: Операция блокирует поток выполнения до своего завершения. Код ждет результата.
- Асинхронность: Операция не блокирует поток. Код продолжает выполнение, а результат обрабатывается с помощью обратных вызовов (callbacks), промисов (promises) или реактивных потоков (reactive streams).
Примеры использования:
- Сетевые запросы (HTTP, базы данных)
- Чтение/запись файлов большого размера
- Длительные вычисления
В Java асинхронность реализуется с помощью:
- Потоков (Threads)
- Экзекуторов (Executors) и пулов потоков (ThreadPools)
Future и CompletableFuture
- Асинхронных фреймворков (Netty, Akka, Reactor)
Пример с CompletableFuture:
java