interrupt()-Methode: Wenn sich ein Thread im Schlaf- oder Wartezustand befindet, können wir mit der interrupt()-Methode die Ausführung dieses Threads unterbrechen, indem wir InterruptedException anzeigen. Ein Thread, der sich im Schlaf- oder Wartezustand befindet, kann mit Hilfe der Methode interrupt() der Klasse Thread unterbrochen werden.

Beispiel: Angenommen, es gibt zwei Threads und wenn einer der Threads in einem Aufruf der Methoden wait(), wait(long) oder wait(long, int) der Klasse Object oder von join() blockiert ist , join (long), join(long, int), sleep(long) oder sleep(long, int), Methoden dieser Klasse, dann wird ihr Interrupt-Status gelöscht und sie erhält eine InterruptedException, die einem anderen Thread die Möglichkeit gibt die entsprechende run()-Methode eines anderen Threads auszuführen, was zu einer hohen Performance führt und die Wartezeit der Threads verkürzt.

Verschiedene Szenarien, in denen wir einen Thread unterbrechen können

  1. Unterbrechen eines Threads, der nicht aufhört zu arbeiten: Im Programm behandeln wir die InterruptedException mit dem Try-and-Catch-Block, so dass jedes Mal, wenn ein Thread den aktuell ausgeführten Thread unterbricht, er aus dem Schlafzustand herauskommt, aber nicht aufhört zu arbeiten.




    // Java Program to illustrate the
    // concept of interrupt() method
    // while a thread does not stops working
    class MyClass extends Thread {
        public void run()
        {
            try {
                for (int i = 0; i < 5; i++) {
                    System.out.println("Child Thread executing");
      
                    // Here current threads goes to sleeping state
                    // Another thread gets the chance to execute
                    Thread.sleep(1000);
                }
            }
            catch (InterruptedException e) {
                System.out.println("InterruptedException occur");
            }
        }
      
    class Test {
        public static void main(String[] args) 
                  throws InterruptedException
        {
            MyClass thread = new MyClass();
            thread.start();
      
            // main thread calls interrupt() method on 
            // child thread
            thread.interrupt();
      
            System.out.println("Main thread execution completes");
        }
    }

    Ausgabe:

    Die Ausführung des Haupt-Threads wird abgeschlossen
    Untergeordneter Thread wird ausgeführt
    InterruptedException auftreten
    
  2. Unterbrechen eines Threads, der nicht mehr funktioniert: Im Programm lösen wir nach dem Unterbrechen des aktuell ausgeführten Threads eine neue Ausnahme im Catch-Block aus, damit er nicht mehr funktioniert.




    // Java Program to illustrate the
    // concept of interrupt() method
    // while a thread stops working
    class Geeks extends Thread {
        public void run()
        {
            try {
                Thread.sleep(2000);
                System.out.println("Geeksforgeeks");
            }
            catch (InterruptedException e) {
                throw new RuntimeException("Thread "
                                          "interrupted");
            }
        }
        public static void main(String args[])
        {
            Geeks t1 = new Geeks();
            t1.start();
            try {
                t1.interrupt();
            }
            catch (Exception e) {
                System.out.println("Exception handled");
            }
        }
    }

    Ausgabe:



    Ausnahme im Thread "Thread-0" java.lang.RuntimeException: Thread unterbrochen
    
  3. Unterbrechen eines normal funktionierenden Threads: Im Programm ist während der Ausführung des Threads keine Ausnahme aufgetreten. Hier setzt interrupt nur das Interrupt-Flag auf true, was später vom Java-Programmierer verwendet werden kann.




    // Java Program to illustrate the concept of
    // interrupt() method
    class Geeks extends Thread {
        public void run()
        {
            for (int i = 0; i < 5; i++)
                System.out.println(i);
        }
        public static void main(String args[])
        {
            Geeks t1 = new Geeks();
            t1.start();
            t1.interrupt();
        }
    }

    Ausgabe:

    0
    1
    2
    3
    4
    

Dieser Artikel wurde von Bishal Kumar Dubey beigesteuert . Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel über Contribute.geeksforgeeks.org schreiben oder Ihren Artikel per E-Mail an Contribute@geeksforgeeks.org senden. Sehen Sie, wie Ihr Artikel auf der Hauptseite von GeeksforGeeks erscheint, und helfen Sie anderen Geeks.