Non-blocking calls
Non-blocking execution of a program means that a thread competes for a resource without waiting for it. A non-blocking API for the resources allows calling the resources without waiting for the blocked call such as database access and network calls. If the resources are not available at the time of calling, then it moves to other work rather than waiting for the blocked resources. The system is notified when the blocked resources are available.
Take a look at the following diagram that shows the JDBC connection to access data without the blocking thread execution:
As you can see in the preceding diagram, thread execution does not wait for the result set from the DB server. The thread makes the DB connection and SQL statement for the DB server. If the DB server has latency in the response, then the thread moves on to do other work rather than be blocked waiting for the resource to become available.