title: Interrupt not interrupting the thread, forced to stop
body: <p>Requirement: I'll first state my requirement and how I came over it. I was supposed to make 3 calls to back end-systems, but couldn't afford sequential calls, as they would take too long and breach the SLA. </p>
  
  <p>Solution: I used the ExecutorService to create 3 threads and gave them each 3 different tasks. </p>
  
  <pre><code>final ExecutorService service = Executors
                  .newFixedThreadPool(NUMBEROFTHREADSTOSPAWNSIZE);
                  getSubsFutureCall = service
                          .submit(new GetSubsCallable(request));
                  getAccountDetailCall = service
                          .submit(new GetAccountInfoCallable(request));
                  getProvisioningCall = service
                          .submit(new GetProvisioningFromCallable(request));
                  responseGetSubs = getSubsFutureCall
                          .get(TIMEOUT_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
                  responseGetAccountDetail = getAccountDetailCall
                          .get(TIMEOUT_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
                  responseFromCPF = (SubscriptionType) getProvisioningCPFCall
                          .get(TIMEOUT_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
  </code></pre>
  
  <p>Resultant problem: Even after the timeout, the spawned threads continue to run, which is undesirable. Hence, I introduced a monitoring thread, which fetches the list of running threads and interrupts them.</p>
  
  <pre><code>for (Thread t : timeoutList) {      
     t.interrupt();
  }
  </code></pre>
  
  <p><strong>This interrupt is not working!!!</strong></p>
  
  <p>I remember doing similar thing in another project, it worked so beautifully. Our OS was OSX(Apple Mac). Now, I am working on Windows OS. Could that be the problem?</p>
  
  <p>In desperation I added:</p>
  
  <pre><code>for (Thread t : timeoutList) {
     t.interrupt();
     if(!t.isInterrupted() || t.isAlive()){
        t.stop();
     }
  }
  </code></pre>
  
  <p>Can somebody tell what can I do to avoid calling t.stop() method and why the t.interrupt call is not working?</p>