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