This is the main point of non blocking code, some operation can suspend (wait) and do not lock any threads, so thread can do some useful work instead of just wait for some operation result, so if you have some task that waits most of the time (IO operation, user input time based operations such as delay) you can use non-blocking approach and use much less threads and save resources, because threads are expensive