InterruptedException is thrown when any thread is interrupted while it has executed sleep() or wait(). IllegalMonitorState Exception is thrown when any thread executes wait() without holding a lock on an object.
InterruptedException must be handled via try..catch or must be declared in the method defintion. IllegalMonitorState is thrown by JVM..