Threads
Manipulate threads
Interrupt a thread
How to interrupt a thread
- One thread can interrupt another thread by calling the second thread's interrupt method.
- A thread should frequently check its isInterrupted method to see if it has been interrupted.
- If a thread is interrupted while it is sleeping, InterruptedException is thrown. In this case, the isInterrupted method won't indicate that the thread has been interrupted.
A Counter application that uses an interruptable thread
import java.util.Scanner; public class CountInterruptApp { public static void main(String[] args) { Thread counter = new Counter(); // instantiate the counter thread counter.start(); // start the counter thread Scanner sc = new Scanner(System.in); String s = ""; while (!s.equals("stop")) // wait for the user to enter "stop" s = sc.next(); counter.interrupt(); // interrupt the counter thread } } class Counter extends Thread { public void run() { int count = 0; while (!isInterrupted()) { System.out.println(this.getName() + " Count " + count); count++; try { Thread.sleep(1000); } catch (InterruptedException e) { break; } } System.out.println("Counter interrupted."); } }
Console output from the Counter application
Thread-0 Count 0 Thread-0 Count 1 Thread-0 Count 2 stop Counter interrupted. Press any key to continue . . .