title: Can one thread handles multiple requests simultaneously?
body: <p>This question is specific for Tomcat, but answers that are general applicable to other Application Servers / Servlet Containers would be interesting too.</p>
  
  <p>From my understanding, it is guaranteed that each request is handled by a single thread, from a request processing thread pool (let's ignore the situation where the application request handling code executes some work asynchronously).</p>
  
  <p>But what I like to know is, if it is guaranteed that a single thread will only serve one request <em>at the same time</em>?</p>
  
  <p>In other words, is it possible that the work of request R1, that is executed on thread T1 is pre-empted, and that thread T1 is then used to process request R2, after which the processing of R1 continues <em>on T1</em>?</p>
  
  <p>Probably, this question can be more generalized to:
  Can the execution of a Runnable R1 on a thread T1 be 'pre-empted' in favor of the execution of another Runnable R2 <em>on that same thread</em> T1?</p>
  
  <p>I can't get rid of the nagging feeling that I'm just overlooking some kind of fundamental principles of multi-threading in Java, so please, enlighten me!</p>