एक थ्रेड Thread ऑब्जेक्ट पर interrupt को इनवोक करके इंटरप्ट भेज सकता है जिसे इंटरप्ट किया जाना है। इसका मतलब है कि थ्रेड का इंटरप्शन किसी अन्य थ्रेड द्वारा interrupt() मेथड कॉल करने के कारण होता है।
Thread क्लास तीन इंटरप्ट मेथड्स प्रदान करता है:
- void interrupt() - थ्रेड को इंटरप्ट करता है।
- static boolean interrupted() - जांचता है कि क्या वर्तमान थ्रेड इंटरप्ट हुआ है।
- boolean isInterrupted() - जांचता है कि क्या थ्रेड इंटरप्ट हुआ है।
उदाहरण
public class ThreadInterruptTest { public static void main(String[] args) { System.out.println("Thread main started"); final Task task = new Task(); final Thread thread = new Thread(task); thread.start(); thread.interrupt(); // interrupt() मेथड कॉल करना System.out.println("Main Thread finished"); } } class Task implements Runnable { @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println("[" + Thread.currentThread().getName() + "] Message " + i); if(Thread.interrupted()) { System.out.println("This thread was interruped by someone calling this Thread.interrupt()"); System.out.println("Cancelling task running in thread " + Thread.currentThread().getName()); System.out.println("After Thread.interrupted() call, JVM reset the interrupted value to: " + Thread.interrupted()); break; } } } }आउटपुट
Thread main started Main Thread finished [Thread-0] Message 0 This thread was interruped by someone calling this Thread.interrupt() Cancelling task running in thread Thread-0 After Thread.interrupted() call, JVM reset the interrupted value to: false