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 . . .