Example: Suspending a thread using a Java program
This example shows a Java™ program suspending an actively running thread.
Note: By using the code examples, you agree to the terms of the Code license and disclaimer information.
/*
FileName: ATEST14.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 suspended
Thread: Entered
Thread: Active processing
Thread: Active processing
Suspend the thread
Wait a bit until we 'realize' the thread needs to be resumed
Resume the thread
Thread: Active processing
Wait for the thread to complete
Thread: Active processing
Thread: Active processing
Thread: Completed
Testcase completed
*/
import java.lang.*;
public class ATEST14 {
static class theThread extends Thread {
public void run() {
int loop=6;
System.out.print("Thread: Entered\n");
while (--loop > 0) {
System.out.print("Thread: Active processing\n");
safeSleep(1000, "Thread: sleep interrupted\n");
}
System.out.print("Thread: Completed\n");
}
}
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 suspended\n");
safeSleep(2000, "Main first sleep interrupted\n");
System.out.print("Suspend the thread\n");
t.suspend();
System.out.print("Wait a bit until we 'realize' the thread needs to be resumed\n");
safeSleep(2000, "Main second sleep interrupted\n");
System.out.print("Resume the thread\n");
t.resume();
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("Testcase completed\n");
System.exit(0);
}
public static void safeSleep(long milliseconds, String s) {
try {
Thread.sleep(milliseconds);
}
catch (InterruptedException e) {
System.out.print(s);
}
}
}