我有一个控制台Java应用程序,它在后台执行一些任务。如果在键盘缓冲区中存在某些东西,并且我知道所有控制台读取和测试都被阻止,Java不支持用于测试的控制台kbhit()。单独的线程是一个很好的策略,通过按键终止后台任务应用程序?
我要做的是用console.readLine()之类的东西启动一个后台线程,然后在完成这个阻塞调用之后放置一些终止标志。应用程序后台任务将检查此标志并决定是否需要终止。
顺便说一句,我的应用程序正在写入控制台在其工作过程中(通过logback等登录),但从来没有读过它。
这样的策略很好吗?
给我,奉献一个线程来'到Console.ReadLine()'听起来是个不错的方法(按回车键后)......有你测试过了吗?唯一需要担心的是在旗帜上进行同步。 – mre 2011-05-15 00:42:23
@sthupahsmaht哪个标志?控制台已经在Java – 2011-05-15 09:19:02
中同步了,我引用了“我要做的就是启动一个类似于console.readLine()的后台线程,然后在这个阻塞调用完成后放置一些终止标志。检查这个标志并决定他们是否需要终止。“ – mre 2011-05-15 14:28:43