The client of a non-blocking API expects to get the results back quickly, that is, without being blocked for a significant amount of time. So, the notion of a non-blocking API implies a highly responsive application. It can process the request synchronously or asynchronously—it does not matter for the client. In practice, though, this typically means that the application uses asynchronous processing that facilitates an increased throughput and improved performance.
The term non-blocking came into use with the java.nio package. The non-blocking input/output (NIO) provides support for intensive input/output operations. It describes how the application is implemented: it does not dedicate an execution thread to each of the requests but provides several lightweight worker threads that do the processing asynchronously and concurrently.