By default, a Thread stops when execution of run() method finish either normally or due to any Exception.
It is tricky to stop the Thread execution in Java as stop() method has been deprecated from Thread Class.
To make the thread stop, we organise for the run() method to exit.
To make the thread stop, we organise for the run() method to exit.
Stop using boolean State variable or flag:
It is very popular to stop a Thread using flag and it's also safe because it doesn't do anything special rather than helping run() method to finish itself.
class Runner extends Thread {
private boolean exit = false;
@Override
public void run() {
while(!exit) {
System.out.println("Thread is running");
try {
Thread.sleep(500);
} catch(InterruptedException ex) {
System.out.println("Exception !!");
}
}
System.out.println("Stopped !!");
}
public void exit(boolean bExit) {
this.exit = bExit;
}
}
public classThreadStopFlag {
public static void main (String[] args) throwsInterruptedException {
Runner runner = new Runner();
runner.start();
Thread.sleep(1000);
runner.exit(true);
}
}
Output:
Thread is running
Thread is running
Stopped !!
Stop using interrupt() method:
class Runner1 extends Thread {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
System.out.println("Thread is running");
}
System.out.println("Stopped !!");
}
}
public classThreadStopUsingInterrupt {
public static void main (String[] args) throwsInterruptedException {
Runner1 runner = new Runner1();
runner.start();
Thread.sleep(1);
runner.interrupt();
}
}
Output:
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Thread is running
Stopped !!
No comments:
Post a Comment