В чем разница между асинхронностью и параллелизмом

«В чем разница между асинхронностью и параллелизмом» — вопрос из категории Многопоточность, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Асинхронность — это подход, при котором операции выполняются без блокировки основного потока, но не обязательно одновременно. Параллелизм — это одновременное выполнение нескольких операций (например, на разных ядрах CPU).

Пример асинхронности в Kotlin:

viewModelScope.launch {
    val data = async { fetchData() } // не блокирует UI поток
    updateUI(data.await())
}

Параллелизм (используя корутины с Dispatchers.Default):

val result1 = async(Dispatchers.Default) { heavyCalc1() }
val result2 = async(Dispatchers.Default) { heavyCalc2() }
// Обе операции выполняются параллельно

Ключевое отличие: асинхронность — про организацию кода, параллелизм — про физическое одновременное выполнение.