Interrupting a Thread:If any thread is in sleeping or waiting state (i.e. sleep() or wait() is invoked), calling the interrupt() method on the thread, breaks out the sleeping or waiting state throwing InterruptedException. If the thread is not in the sleeping or waiting state, calling the interrupt() method performs normal behaviour and doesn't interrupt the thread but sets the interrupt flag to true. Let's first see the methods provided by the Thread class for thread interruption. The 3 methods provided by the Thread class for interrupting a thread
Example of interrupting a thread that stops workingIn this example, after interrupting the thread, we are propagating it, so it will stop working. If we don't want to stop the thread, we can handle it where sleep() or wait() method is invoked. Let's first see the example where we are propagating the exception. TestInterruptingThread1.java Test it NowOutput: Exception in thread-0 java.lang.RuntimeException: Thread interrupted... java.lang.InterruptedException: sleep interrupted at A.run(A.java:7) Example of interrupting a thread that doesn't stop workingIn this example, after interrupting the thread, we handle the exception, so it will break out the sleeping but will not stop working. TestInterruptingThread2.java Test it NowOutput: Exception handled java.lang.InterruptedException: sleep interrupted thread is running... Example of interrupting thread that behaves normallyIf thread is not in sleeping or waiting state, calling the interrupt() method sets the interrupted flag to true that can be used to stop the thread by the java programmer later. TestInterruptingThread3.java Test it NowOutput: 1 2 3 4 5 What about isInterrupted and interrupted method?The isInterrupted() method returns the interrupted flag either true or false. The static interrupted() method returns the interrupted flag afterthat it sets the flag to false if it is true. TestInterruptingThread4.java Test it NowOutput: Code for interrupted thread code for normal thread code for normal thread code for normal thread Next TopicReentrant Monitor in Java |
We provides tutorials and interview questions of all technology like java tutorial, android, java frameworks
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India