Asynchronous programming is a unifying concept.
Common multithreading is an implementation of asynchronous programming, and there are other asynchronous methods, such as: coroutines, multi-processes, and even multi-hosts can all be called asynchronous programming (personal understanding).
Concurrency: Do multiple things within a period of time
Parallel: Do multiple things at the same time
Asynchronous is the purpose
Multithreading is a way to achieve asynchrony.
A program can also be asynchronous on one main thread: for example, a time-consuming task is divided into many parts and executed in frames on the main thread (coroutine).
More Baidu Google will have it.