- Java.lang - Home
- Java.lang - Boolean
- Java.lang - Byte
- Java.lang - Character
- Java.lang - Character.Subset
- Java.lang - Character.UnicodeBlock
- Java.lang - Class
- Java.lang - ClassLoader
- Java.lang - Compiler
- Java.lang - Double
- Java.lang - Enum
- Java.lang - Float
- Java.lang - InheritableThreadLocal
- Java.lang - Integer
- Java.lang - Long
- Java.lang - Math
- Java.lang - Number
- Java.lang - Object
- Java.lang - Package
- Java.lang - Process
- Java.lang - ProcessBuilder
- Java.lang - Runtime
- Java.lang - RuntimePermission
- Java.lang - SecurityManager
- Java.lang - Short
- Java.lang - StackTraceElement
- Java.lang - StrictMath
- Java.lang - String
- Java.lang - StringBuffer
- Java.lang - StringBuilder
- Java.lang - System
- Java.lang - Thread
- Java.lang - ThreadGroup
- Java.lang - ThreadLocal
- Java.lang - Throwable
- Java.lang - Void
- Java.lang Package Useful Resources
- Java.lang - Useful Resources
- Java.lang - Discussion
Java - InterruptedException
The Java InterruptedException is thrown when a thread is waiting, sleeping, or doing some processing, and it is interrupted. The InterruptedException is a checked exception that is thrown when a thread is waiting, sleeping, or doing some processing, and it is interrupted.
Following is the reason when JVM throws an InterruptedException in Java:
- When a thread is doing some processing, and it is interrupted, JVM throws an InterruptedException.
Constructors of InterruptedException
There are two constructors of InterruptedException class:
- InterruptedException(): This constructor is used to create an InterruptedException object without any message.
- InterruptedException(String message): This constructor is used to create an InterruptedException object with a message.
Methods of InterruptedException
There are some methods of InterruptedException class:
| Method | Description |
|---|---|
| getMessage() | It is used to return the message of the exception. |
| toString() | It is used to return the detail message string of the exception. |
| printStackTrace() | It is used to print the stack trace of the exception. |
Example of InterruptedException
In this example, we are creating a thread that is sleeping for 5 seconds. We are interrupting the thread while it is sleeping, so JVM will throw an InterruptedException.
public class InterruptedExceptionExample extends Thread {
public void run() {
Thread.sleep(5000);
}
public static void main(String[] args) {
InterruptedExceptionExample t1 = new InterruptedExceptionExample();
t1.start();
t1.interrupt();
}
}
Output
Following is the output of the above code:
InterruptedExceptionExample.java:3: error: unreported exception InterruptedException; must be caught or declared to be thrown
Thread.sleep(5000);
^
1 error
As you can see in the output, JVM throws an InterruptedException because we are interrupting the thread while it is sleeping.
Handling InterruptedException
In this example, we are creating a thread that is sleeping for 5 seconds. We are interrupting the thread while it is sleeping, so JVM will throw an InterruptedException. We are handling this exception using try-catch block.
public class InterruptedExceptionExample extends Thread {
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Thread is interrupted");
}
}
public static void main(String[] args) {
InterruptedExceptionExample t1 = new InterruptedExceptionExample();
t1.start();
t1.interrupt();
}
}
Output
Following is the output of the above code:
Thread is interrupted
As you can see in the output, we are handling the InterruptedException using the try-catch block.
How avoid InterruptedException in Java?
There are some ways to avoid the InterruptedException in Java:
- Use the Thread.interrupted() method to check if the current thread is interrupted or not.
- Use the Thread.currentThread().isInterrupted() method to check if the current thread is interrupted or not.
- Use the Thread.sleep() method with the TimeUnit class to avoid the InterruptedException.
Avoiding InterruptedException using Thread.interrupted() method
In this example, we are creating a thread that is sleeping for 5 seconds. We are interrupting the thread while it is sleeping. We are using the Thread.interrupted() method to check if the current thread is interrupted or not.
public class HandleInterruptedException extends Thread {
public void run() {
while (!Thread.interrupted()) { // Check if thread is interrupted
try {
System.out.println("Thread running...");
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("Thread interrupted! Exiting...");
break; // Exit the loop when interrupted
}
}
}
public static void main(String[] args) throws InterruptedException {
HandleInterruptedException t1 = new HandleInterruptedException();
t1.start();
Thread.sleep(3000); // Let it run for 3 seconds
t1.interrupt(); // Interrupt the thread
}
}
Output
Following is the output of the above code:
Thread running... Thread running... Thread running... Thread interrupted! Exiting...