Sun deprecated Thread.stop() because it is unsafe. They didn’t provide any direct alternative for this operation; instead they are making us to reinvent the wheel. Here I am sharing my style of safe thread stop implementation.
public class CustomThread extends Thread {
private boolean shutdown;
@Override
public void run() {
while (true) {
if (shutdown) {
break;
}
// TODO: your actual task code goes here
if (shutdown) {
break;
}
try {
// your thread sleep interval
Thread.sleep(6000);
} catch (InterruptedException exp) {
// ignore this error
}
}
}
public void shutdown() {
if (isAlive()) {
this.shutdown = true;
this.interrupt();
try {
// wait till this thread dies
this.join();
} catch (InterruptedException e) {
// safe to ignore this error
}
}
}
}
|
Hope the above code is self explanatory. I am happy with the above code because it uses most of the thread functions like join(), interrupt() and isAlive(). For web applications, threads can be started from context listener; you can invoke shutdown() method from Content Listener’s destroy() method. You can find more information in the below link.
http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html
Related Articles
- Difference between Thread.sleep() and Object.wait()
- What is the magic Serializable interface does in Java?
- Advantages of ThreadLocal in Java
- Back to Basics: Statement vs. Prepared Statement
- What is the better approach to implement Singleton pattern?
- Why multiple inheritance is not allowed in Java
- Volatile and doubled checked locking in Java
- Importance of specifying initial capacity while instantiating ArrayList and HashMap

Leave a comment