In Java we can get InterruptedException from sleep() or join()
methods. Throwing InterruptedException is way to inform that
another thread has interrupted this thread.
In general, the purpose of Interrupt is to ask current thread to stop its
current execution and finish unexpectedly.
Therefore ignoring this exception by catching it and only logging it
to the console or some log file is not the recommended approach.
The run() method of the Runnable interface does not allow that
throwing any exceptions. So we cannot re-throw
InterruptedException.
Therefore the correct way to handle this exception is that run()
method should check and handle this exception by itself and take
appropriate action.