怎样才能中止一个Thread对象并将其及时释放?
刚刚开始学习多线程机制,很多地方不了解.
程序中有类似如下代码:
class A implements Runnable {
... ...
private Thread threadA;
public A() {
... ...
threadA=new Thread(this);
}
public void run() {
... ...
}
public void start() {threadA.start();}
public void reset() {
... ...
threadA=null;
threadA=new Thread(this);
}
}
程序中需要有一个reset()方法以使A对象能复原成初始的状态,使得当它再start()时能表现出与刚构造完再start()一样的行为. 我以为像上面那样,将threadA原先指向的线程对象置空再指向一个新线程对象就可以了,但调试时才发现这样做其实不能销毁原先的线程,它与新的线程同时存在并继续执行,造成了程序逻辑上的错误.
那么怎样才能真正地在reset()方法中停止原先的线程,并且将原先的线程对象释放呢?