Example: Canceling a thread using a Java program
This example shows a Java™ program canceling a long-running thread.
Note: By using the code examples, you agree to the terms of the Code license and disclaimer information.
/*
FileName: ATEST13.java
The output of this example is as follows:
Entered the testcase
Create a thread
Start the thread
Wait a bit until we 'realize' the thread needs to be canceled
Thread: Entered
Thread: Looping or long running request
Thread: Looping or long running request
Thread: Looping or long running request
Wait for the thread to complete
Thread status indicates it was canceled
Testcase completed
*/
import java.lang.*;
public class ATEST13 {
static class theThread extends Thread {
public final static int THREADPASS = 0;
public final static int THREADFAIL = 1;
public final static int THREADCANCELED = 2;
int _status;
public int status() {
return _status;
}
public theThread() {
_status = THREADFAIL;
}
public void run() {
System.out.print("Thread: Entered\n");
try {
while (true) {
System.out.print("Thread: Looping or long running request\n");
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.out.print("Thread: sleep interrupted\n");
}
}
}
catch (ThreadDeath d) {
_status = THREADCANCELED;
}
}
}
public static void main(String argv[]) {
System.out.print("Entered the testcase\n");
System.out.print("Create a thread\n");
theThread t = new theThread();
System.out.print("Start the thread\n");
t.start();
System.out.print("Wait a bit until we 'realize' the thread needs to be canceled\n");
try {
Thread.sleep(3000);
}
catch (InterruptedException e) {
System.out.print("sleep interrupted\n");
}
t.stop();
System.out.print("Wait for the thread to complete\n");
try {
t.join();
}
catch (InterruptedException e) {
System.out.print("Join interrupted\n");
}
System.out.print("Thread status indicates it was canceled\n");
if (t.status() != theThread.THREADCANCELED) {
System.out.print("Unexpected thread status\n");
}
System.out.print("Testcase completed\n");
System.exit(0);
}
}