Concurrency
This is a technique to handle large tasks that require waiting on different resources outside the control of the executor. This means starting lots of different tasks and switching to a different task whenever you are blocked from progressing on your current task. A common technique here is asynchronous programming or multi-threading using a single kernel thread.