Two main difference between normal threaded system and asynchronous system are:

For threaded execution each thread has its own controller, however for asynchronous system there is only one thread controller.

Threaded execution does not give the control of ending, starting, changing to user. It is mainly controlled by the operating system internals. On the other side asynchronous execution need some explicit command to interleave one execution to other. It is more in control in the programmer's perspective.