Asynchronous processing
Traditionally, servlets have created a single thread per request in Java web applications. After a request is processed, the thread is made available for other requests to use. This model works fairly well for traditional web applications, in which HTTP requests are relatively few and far between. However, most modern web applications take advantage of Ajax (short for Asynchronous JavaScript and XML), a technique that makes web applications behave much more responsively than traditional web applications.
Ajax has the side effect of generating a lot more HTTP requests than traditional web applications. If some of these threads block for a long time waiting, for a resource to be ready or doing anything that takes a long time to process, it is possible our application may suffer from thread starvation.
To alleviate the situation described in the previous paragraph, the Servlet 3.0 specification introduced asynchronous processing. Using this new capability...