在JDK1.5中有getState()方法和Thread.State类可以判断线程的状态,但是现在老大说必须在1.4上实现多线程的一些功能,怎么才能在1.4上判断线程是否正常结束,是否是新线程……,???
[b]问题补充:[/b]
不好意思,可能是我的问题没有描述清楚.我再重新说明一下.现在要求在JDK1.4版本上进行一个多线程的开发.在这么几种状态需要判断:1.线程是否是新建未执行的;2.线程是否是在执行中;3.线程是否正常执行完毕;4.线程是否发生异常。而isInterrupted()只是测试是否异常中止,isAlive()也只是测试线程是否还活着,但相关文档并没有说明如果isAlive()返回false则表明线程正常中止。
于是我想到继承Thread类,然后添加一个线程状态,在构造方法中将状态置为新增,在start()方法前将线程置为已启动:
[code="java"]
public class ThreadTask extends Thread {
/**
* 线程状态:新建
*/
public final static int THREAD_STATE_NEW = 0;
/**
* 线程状态:执行中
*/
public final static int THREAD_STATE_EXEC = 1;
/**
* 线程状态:意外中止
*/
public final static int THREAD_STATE_INTERRUPTED = 2;
/**
* 线程状态:执行完毕
*/
public final static int THREAD_STATE_OVER = 3;
/**
* 线程状态
*/
private int state = 0;
public ThreadTask(ThreadGroup tg, Runnable run) {
super(tg, run);
chgStat(THREAD_STATE_NEW);
}
public void start() {
chgStat(THREAD_STATE_EXEC);
super.start();
}
private synchronized void chgStat(int stat) {
this.state = stat;
}
}
[/code]
但是应该如何确定执行正常执行完毕呢?