我有一个Main()按计划执行Thread。 如果发生异常(e.printStackTrace),则线程将中止并等待,直到下一次启动。
我希望能够在不抛出异常的情况下中止线程。 在Main() - Class中,它相当容易,只是“返回false”,并且线程结束。
但是当我在一个类的Class / Object中时,我不能这样做。 如何从子类中中止/完成Main?
答案 0 :(得分:0)
您想要中止线程,还是要关闭VM?
如果要停止VM,请尝试Runtime.getRuntime()。exit(0);
停止任意运行的线程通常不安全,请尝试阅读: http://docs.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
更好地解释情况。
答案 1 :(得分:0)
如果我理解你,你不想关闭整个程序,只是一些线程?
你需要从你进入的所有子方法返回。你能说明你的方法run()
在你的线程中的样子吗?
例如:如果从某个函数(doSomething()
)返回,则需要从方法run()
返回:
@Override
public void run() {
while (true) {
doSomething(); // - your main function
}
}
检查一下条件。如果您想退出设定值boolean exiting = true;
并在循环中检查它:if (exiting) return;
关闭任何线程的正确方法是从方法run
答案 2 :(得分:-1)
您可以尝试System.exit(0)。
如果有效,请告诉我们。