Home » 
        Java programming language
    
    Java Thread Class void interrupt() method with Example
    
    
    
            
        Java Thread Class void interrupt() method: Here, we are going to learn about the void interrupt() method of Thread class with its syntax and example.
        Submitted by Preeti Jain, on July 24, 2019
    
    
    Thread Class void interrupt()
    
        - This method is available in package java.lang.Thread.interrupt().
- This method is used to interrupt the thread.
- 
            We will discuss three cases
            
                - If a thread is in sleeping or  waiting state so in that case, we can interrupt the thread execution by throwing an exception(InterruptedException).
- If a thread is in sleeping or waiting state so, in that case, we can also interrupt the thread for normal execution by calling interrupt() method.
- If a thread is not in sleeping or waiting state so, in that case, we can also interrupt the thread for normal execution by calling interrupt() method.
 
- This method is not static so we cannot access this method with the class name too.
- The return type of this method is void so it does not return anything.
- This method raises an exception if the current thread is not able to modify the thread.
Syntax:
    void interrupt(){
    }
    Parameter(s):
    We don't pass any object as a parameter in the method of the Thread.
    
    Return value:
    The return type of this method is void, it returns nothing.
    
    Java program to demonstrate example of interrupt() method
    Case 1: We are interrupting the thread for stop execution of the thread if the thread is in sleeping mode.
/*  We will use Thread class methods so we are importing 
    the package but it is not mandate because 
    it is imported by default
*/
import java.lang.Thread;
class InterruptedThread extends Thread  
{    
	// Overrides run()  method of Thread class
	public void run() 
	{   
		/*  The thread named InterruptedThread is in sleep mode 
			by using sleep(t) so this thread is giving a chance 
			for execution to another thread named "main"
		*/
		try{
			Thread.sleep(1000);    
			System.out.println("We are waiting till another thread execution");
		}catch(Exception ex){    
			System.out.println("InterruptedThread is interrupted "+ex.getMessage());
		}
	}
	public static void main(String args[])  
	{    
		InterruptedThread it = new InterruptedThread();    
		/*  By using start() method to call the run() method of 
			Thread class and Thread class start() will call run() 
			method of InterruptedThread class
		*/
		it.start(); 
		/*  Here thread named InterruptedThread got interrupted by
			using the interrupt() method 
		*/
		try  
		{    
			it.interrupt();    
		}catch(Exception ex){
			System.out.println("Exception handled "+ex.getMessage());
		}
	}
}    
Output
E:\Programs>javac InterruptedThread.java
E:\Programs>java InterruptedThread
Exception in thread "Thread-0" java.lang.RuntimeException: 
InterruptedThread is Interruptedsleep interrupted
        at InterruptedThread.run(InterruptedThread.java:13)
    Case 2: We are interrupting the thread for normal execution without stopping if the thread is in sleeping mode.
/*  We will use Thread class methods so we are importing 
    the package but it is not mandate because 
    it is imported by default
*/
import java.lang.Thread;
class InterruptedThread extends Thread  
{    
	// Overrides run()  method of Thread class
	public void run() 
	{
		/*  The thread named InterruptedThread is in sleep mode 
			by using sleep(t) so this thread is giving a chance 
			for execution to another thread named "main"
		*/
		try{
			Thread.sleep(1000);    
			System.out.println("We are waiting till another thread execution");
		}catch(Exception ex){
			System.out.println("Exception handled : "+ex.getMessage()); 
		}
		System.out.println("Interrupted thread is executing normally");
	}    
	public static void main(String args[])  
	{    
		InterruptedThread it = new InterruptedThread();    
		/*  By using start() method to call the run() method of 
			Thread class and Thread class start() will call run() 
			method of InterruptedThread class
		*/
		it.start(); 
		/*  Here thread named InterruptedThread got interrupted by
			using the interrupt() method 
		*/
		it.interrupt();    
	}    
}
Output
E:\Programs>javac InterruptedThread.java
E:\Programs>java InterruptedThread
Exception handled : sleep interrupted
Interrupted thread is executing normally
    Case 3: We are interrupting the thread for normal execution if the thread is not in sleeping mode.
/*  We will use Thread class methods so we are importing 
    the package but it is not mandate because 
    it is imported by default
*/
import java.lang.Thread;
class InterruptedThread extends Thread  
{    
	// Overrides run()  method of Thread class
	public void run() 
	{    
		System.out.println("We are executing this thread normally");
	}    
	public static void main(String args[])  
	{    
		InterruptedThread it = new InterruptedThread();    
		/*  By using start() method to call the run() method of 
			Thread class and Thread class start() will call run() 
			method of InterruptedThread class
		*/
		it.start(); 
		/*  Here thread named InterruptedThread got interrupted by 
			using the interrupt() method 
		*/
		it.interrupt();
	}    
} 
Output
E:\Programs>javac InterruptedThread.java
E:\Programs>java InterruptedThread
We are executing this thread normally
    
    
  
    Advertisement
    
    
    
  
  
    Advertisement