2014-02-14 87 views
1

我有一个应用程序,其主函数在无限循环中,因为它基于轮询机制。我想从应用程序外部调用并终止主函数。为了启动应用程序我可以直接拨打电话,如:MyClass.main("parameters") 但我无法找到杀死或终止主要功能的方法。如何在java中停止/终止主线程

+0

'killall java'? – njzk2

+1

这是一个系统命令。我想从另一个首先调用它然后杀死它的自动化进程中完成它。 –

+0

@Harsh Gupta:那你运气不好。一个Java应用程序不可能在没有使用系统命令或修改应用程序停止/终止的情况下停止或终止其他应用程序。没有API。 –

回答

1

建立一个while循环来检查变量是否为真,并创建一个方法来更改变量。当你想终止它时,调用该方法并将其更改为false。

+0

“...从应用程序之外......”我不清楚OP是否真的意味着一个单独的过程,但如果是这样,这里需要更多。 – TypeIA

+0

也许他可以尝试捕捉一些信号 - http://stackoverflow.com/questions/2541475/capture-sigint-in-java – Leo

+1

是的我有一个应用程序在无限循环轮询文件和**我不能改变机制**。因此,如果我的应用程序是MyApp.java并且它有一个主函数。我想从另一个java文件自动启动和停止/终止MyApp。Automate.java –

0

我会让MyApp成为实现Runnable接口的类。它也会有一些叫做hasMoreFile()或isComplete()或类似的方法。然后Automate类将创建一个Thread并在该线程中运行MyApp。自动化会有一个循环,它会调用MyApp.isComplete(),如果为false,则在再次检查之前会休眠指定的一段时间。如果MyApp.isComplete()返回true,则Automate会向MyApp发送停止消息或停止MyApp运行的线程。