我有一个Java程序处理一大堆XML文件。 该过程需要几个小时才能运行,有时我需要停止。 现在,我使用 CTRL-C 杀死它,记下它正在处理哪个文件,然后删除这些文件的数据并重新处理它们。
有没有办法让 Java 在等待用户在命令行上输入时继续工作,此外,我可以让它在侦听时继续将日志信息输出到命令提示符吗?
我考虑过让它在文件之间等待用户输入几秒钟,但这会增加整体处理时间,而且我不确定有没有办法轻松使用户输入超时。
您有兴趣生成另一个线程供 XML 处理器运行。 看看java.util.concurrent
图书馆。
您的主线程可以处理用户输入,而另一个线程可以向控制台报告。 处理两者之间的任何并发问题可能很困难,最好避免两者之间的通信,以免自己头疼。
您最终将添加类似于
Thread xmlProcessorThread = new Thread(yourRunnableXMLProcessor);
xmlProcessorThread.run();
并将runnable
接口添加到 XML 处理器(因此得名 yourRunnableXMLProcessor
)
在命令行应用程序中,启动一个实际执行文件处理工作的新线程。处理线程可以在每个文件之后检查内部标志,并确定是否继续。主应用程序线程将继续侦听命令行输入,并可以根据接收输入的时间设置标志的值。