Yeah, I had my doubts about the value of AsyncTask in this scenario. I like your suggestion of using a fixed thread pool (which is what the plain Java client was doing), and the Runtime.availableprocessors() call is a nice addition. The latest commits use this approach.