Java.lang.ThreadGroup.interrupt() Method

Advertisements


Description

The java.lang.ThreadGroup.interrupt() method interrupts all threads in this thread group.

Declaration

Following is the declaration for java.lang.ThreadGroup.interrupt() method

public final void interrupt()

Parameters

  • NA

Return Value

This method does not return any value.

Exception

  • SecurityException -- if the current thread is not allowed to access this thread group or any of the threads in the thread group.

Example

The following example shows the usage of java.lang.ThreadGroup.interrupt() method.

package com.tutorialspoint;

import java.lang.*;

class newThread extends Thread {
   boolean stop;

   newThread(ThreadGroup group, String name) {
      super(group, name);
      stop = false;
   }

   public void run() {
      System.out.println(Thread.currentThread().getName() + " starting.");
      try {
         for(int i = 1; i < 1000; i++) {
            Thread.sleep(500);
            synchronized(this) {
               if(stop)
                  break;
            }   
         }
      }
      catch(Exception e) {
         System.out.print(Thread.currentThread().getName());
         System.out.println(" interrupted.");
      }
      System.out.println(Thread.currentThread().getName() + " exiting.");
   }

   synchronized void stopFunc() {
      stop = true;
   }
}

public class ThreadGroupDemo {

   public static void main(String args[]) throws Exception {

     ThreadGroup group = new ThreadGroup("new Group");

     newThread t1 = new newThread(group, "Thread1");
     newThread t2 = new newThread(group, "Thread2");
   
     // this will call run() method
     t1.start();
     t2.start();
   
     Thread.sleep(1000);

     // it shows current active threads in Thread Group
     System.out.println(group.activeCount() + " threads in thread group...");

     // returns the number of thread groups
     Thread th[] = new Thread[group.activeCount()];
     group.enumerate(th);
     for(Thread t : th)
        System.out.println(t.getName());

     t1.stopFunc();
     Thread.sleep(1000);
    
     System.out.println(group.activeCount() + " threads in thread group...");
     // thread group interrupted
     group.interrupt();
  }
}

Let us compile and run the above program, this will produce the following result:

Thread1 starting.
Thread2 starting.
2 threads in thread group...
Thread1
Thread2
Thread1 exiting.
1 threads in thread group...
Thread2 interrupted.
Thread2 exiting.



Advertisements
Advertisements