1

我有一个处理大量 XML 文件的 Java 程序。该过程需要几个小时才能运行,有时我需要停止。现在我CTRL-C用来杀死它,记下它正在处理的文件,然后我删除这些文件的数据并重新处理它们。

有没有办法让 Java 在等待命令行上的用户输入时继续工作,此外,我可以让它在侦听时继续向命令提示符输出日志信息吗?

我考虑让它在文件之间等待用户输入几秒钟,但这会增加整体处理的时间,而且我不确定是否有一种方法可以轻松地使用户输入超时。

4

2 回答 2

1

您有兴趣为您的 XML 处理器生成另一个线程来运行。查看java.util.concurrent库。

您的主线程可以处理用户输入,而另一个线程可以向控制台报告。处理两者之间的任何并发问题都可能很困难,最好建议尽可能避免两者之间的通信,以免自己头疼。

你最终会添加看起来像这样的代码

Thread xmlProcessorThread = new Thread(yourRunnableXMLProcessor);
xmlProcessorThread.run();

并将runnable接口添加到您的 XML 处理器(因此得名yourRunnableXMLProcessor

于 2012-11-28T22:51:36.630 回答
0

在您的命令行应用程序中启动一个新线程,该线程实际上执行处理文件的工作。处理线程可以在每个文件之后检查一个内部标志并确定是否继续。主应用程序线程将继续侦听命令行输入,并可以根据它接收输入的时间设置标志的值。

于 2012-11-28T22:53:01.390 回答