Асинхронность и многопоточность связаны, но не идентичны.
Многопоточность - это способность выполнять несколько частей программы конкурентно/параллельно, используя несколько потоков выполнения.
Асинхронность - это модель программирования, при которой задача запускается и не блокирует основной поток выполнения, ожидая завершения. Основной поток может выполнять другие задачи до получения результата асинхронной операции.
Связь: Асинхронные операции часто реализуются с использованием многопоточности, где долгие задачи запускаются на отдельном потоке, чтобы не блокировать главный. Однако асинхронность также может быть достигнута другими способами, например, обработкой событий или использованием одного потока с кооперативной многозадачностью.
Пример: