title: Single thread pool vs one thread pool per task
body: <p>I want to use concurrency in Java to make requests to an online API, download and parse the response documents, and load the resulting data into a database.</p>
  
  <p>Is it standard to have one pool of threads in which each thread requests, parses, and loads?  In other words, only one class implements <code>Runnable</code>.  Or is it more efficient to have, say, three different pools of threads, with the first pool of threads making the requests and pushing them to a queue, the second pool of threads polling from the first queue, parsing, and pushing the parsed data to a second queue, and finally the third pool polling the data from the second queue and loading into the database?  In this case, I'd write three different classes that implement <code>Runnable</code>.</p>