It uses java.nio to manage connections. All the connections are thus managed on a single thread, rather than one per thread. NIO is extremely efficient.
// url is the URL to download. The callback will be invoked on the UI thread// once the download is complete.AsyncHttpClient.get(url, newAsyncHttpClient.StringCallback(){@Override// Callback is invoked with any exceptions/errors, and the result, if available.publicvoidonCompleted(Exceptione, Stringresult){if (e != null){e.printStackTrace(); return} System.out.println("I got a string: " + result)} });AsyncHttpClient.get(url, filename, newAsyncHttpClient.FileCallback(){@OverridepublicvoidonCompleted(Exceptione, Fileresult){if (e != null){e.printStackTrace(); return} System.out.println("my file is available at: " + result.getAbsolutePath())} });// listen on port 5000AsyncHttpServermServer = newAsyncHttpServer(5000); mServer.get("/", newHttpServerRequestCallback(){@OverridepublicvoidonRequest(AsyncHttpServerRequestrequest, AsyncHttpServerResponseresponse){response.send("Hello!!!")} }); // browsing http://localhost:5000 will return Hello!!!