Q:

Javascript and jQuery Ajax - How does it work?

As we know, browser are single-threaded, it can either render the UI or perform the Javascript snippets. (webworker are possible ways to make it multi-threaded, but let's stick to the default behavior).
What I am interested to know is that when we make a jQuery ajax call
$.ajax(....)

It doesn't block the Javascript thread, how does it happen? 
1) What does the browser do when it make a request to the server? 
2) When the server has responded with data, is it browser's implementation that allow Javascript to listen for such event to allow for promise fulfilled handler. 
I am asking this as I have noticed that it is recommended to create a separate thread for downloading of files in Android through usage of AsyncTask framework. Why can't Android implement the same way as Javascript. 

A:

First of all it's not related to jQuery ajax call but to  javascript ajax call. ( with all the respect to jQuery).

What does the browser do when it make a request to the server?

The browser adds the command to a queue.
The main thread (among other future  things it has to do  )-- executes(when it's time quanta arrives) the command from the queue.  
NB
The browser itself ( chrome.exe , Iexplore.exe) does use multithread in order to handle/run the ajax .(we're talking about the exe program which obviously does use multithreading).
But when there is a response from the server -(now we're back to the same old single thread browser )- it is  added to a callbacks queue which is treated (when it's time quanta arrives) by the same single main thread of the browser.
Notice: the fact that there is a item added to the queue doesn't mean it is immediately automatically executed :  
This picture explains it very well : 
(related info : there are 2 major async operation in JS : setTimeout(or setInterval) , Ajax)

When the server has responded with data, is it browser's
  implementation that allow Javascript to listen for such event to allow
  for promise fulfilled handler.

The Ajax (xmlhttpobject) object has handlers which is raised according to a state. so it's in the implementation itself. again - nothing related to jQuery.
It is also worth mentioning that html5 support web workers which allows true multithreading.

