我的守护进程在不同的线程上创建并运行一个函数,该函数运行许多其他函数。我想在每个函数之前检查守护进程是否关闭,如果没有,我将执行该函数。我怎么知道守护进程是否已停止?
问问题
88 次
3 回答
0
class Daemon extends Thread()
{
private boolean started;
public void Daemon() {
started = false;
}
public void run() {
started = true;
// rest of your code.
}
public boolean isStoped() {
return started && !isAlive();
}
}
用于isStoped()
知道您的线程何时停止。isAlive()
单独是不够的,因为尚未启动的线程将返回false
。
于 2015-08-06T10:08:47.027 回答
0
当在某个线程中运行的代码创建一个新的 Thread 对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护线程时,它才是守护线程。
如果您不知道线程是否为守护进程,请使用isDaemon
,
是守护进程
公共最终布尔值 isDaemon()
测试此线程是否为守护线程。
返回: 如果此线程是守护线程,则为 true;否则为假。
然后你可以通过调用来询问线程的当前状态:
Thread.State ts = thread.getState();
你应该得到以下之一:
线程状态。线程可以处于以下状态之一:
NEW 尚未启动的线程处于此状态。
RUNNABLE 在 Java 虚拟机中执行的线程处于此状态。
BLOCKED 阻塞等待监视器锁的线程处于此状态。
WAITING 无限期等待另一个线程执行特定操作的线程处于此状态。
TIMED_WAITING 等待另一个线程执行操作达指定等待时间的线程处于此状态。
TERMINATED 已退出的线程处于此状态。
参考:http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#isDaemon()
于 2015-08-06T10:16:20.450 回答
0
就像任何其他线程一样,您必须获取线程实例,然后调用:
thread.isAlive()
于 2015-08-06T09:42:01.720 回答