假设名为Prey
的类扩展Thread
,并且名为Prey
的{{1}}对象在deer
资源上处于等待状态。现在我想通过处于等待状态的力来杀死这个synchronized
。以下哪一种方法可以杀死deer
。
deer
deer.interrupt();
deer.notify();
deer.interrupt();
deer.notify();
deer.killmeBoolean(true);
其中deer.killmeBoolean(true);
deer.notify();
用于设置标志,以便可以killmeBoolean(boolean)
循环终止deer
线程。
答案 0 :(得分:4)
您可以在线程正在等待的资源上调用notify
或notifyAll
。这将告诉线程资源是“准备好”并继续其工作。请注意,线程仍然只能在释放资源锁定时继续。
或,您调用deer.interrupt()
告诉线程停止正在执行的操作。这将通过抛出InterruptedException
来取消等待操作。通常预期线程将尽快清理并停止,但是,由线程的实现(即本例中的自己的代码)来处理中断。
设置killMeBoolean
只会在线程运行时生效并检查相应的变量。为此,您可以使用上面的任一方法。