Interrupted exception vs isInterrupted in a while loop

concurrency, interrupted-exception, java, multithreading, while-loop

Solution

Actually your question is more about `try - catch - finally` than about multithreading.

1) If `sleep` throws an `Exception`, the `catch` block will execute and then the `while` loop continues.

2) You do the exact same thing as in 1)

To leave the `while` loop, do:

try{  
   while(!Thread.currentThread.isInterrupted){  
       //do something   
       Thread.sleep(5000);    
   }  
}
catch(InterruptedException e){  

}

In that case, if an `Exception` is thrown, the `while` loop is left and the `catch` block is executed.

Problem

Assume that I have the following code: ``` while(!Thread.currentThread().isInterrupted()){ //do something Thread.sleep(5000); } ``` Now `Thread.sleep` throws `InterruptedException so it should be like this: ``` while(!Thread.currentThread().isInterrupted()){ //do something try{ Thread.sleep(5000); } catch(InterruptedException e){ } } ``` If I hit the `catch` will the `while` loop continue or do I need to do `Thread.currentThread().interrupt()`? If I do call this method, won't that also cause an `InterruptedException`? Otherwise how I got the exception in the first place? Also if I have: ``` while (!Thread.currentThread().isInterrupted()){ //do something callMethod(); } private void callMethod(){ //do something try { Thread.sleep(5000); } catch(InterruptedException e){ } } ``` again will my `while` loop break?

Original source

Related problems