title: Single or multiple thread pools for Java server?
body: <p>I am writing a fairly complex Java server application which has a significant background processing portion in addition to the usual request-response processing. Some of the background processing is done in a cron-like fashion using Quartz framework. Other tasks are more of on demand - if a new client connects it creates additional job for updating it once in a while. The cron tasks can also be varied - some do monitoring of external applications, some calculate statistics and so on.</p>
  
  <p>I am using a number of thread pools to run all those jobs with the idea that similar jobs will share a thread pool but different jobs will not share one. For example monitor jobs will never run on statistics pool, and statistics jobs will never run on monitor pool.</p>
  
  <p>On the other hand I know some people would prefer just to have a single thread pool and run everything on it without any separation.</p>
  
  <p>I wonder what is considered the best practice in such a scenario. </p>
  
  <p>What are the pros an cons of separating thread pools?</p>
  
  <p>Does it even matter?</p>