Tag: program flow

在Java中返回/停止在keypress上执行函数

我的程序中有一定的function,我想在按键时停止。 我为此设置了一个本机键盘钩子。 现在,当检测到该键时,我调用System.exit(0)。 但是,我不想退出程序,只是停止该操作并返回到它所调用的位置。 下面给出一个例子。 public class Main { public static void main(String[] args) { System.out.println(“Calling function that can be stopped with CTRL+C”); foo(); // Should return when CTRL+C is pressed System.out.println(“Function has returned”); } } 我已经尝试将调用foo()放在一个线程中,所以我可以调用Thread.interrupt()但我希望函数调用是阻塞的,而不是非阻塞的。 在foo()还有阻塞IO调用,所以我宁愿不处理中断,除非有必要,因为我必须处理ClosedByInterruptExceptionexception并且之前已经引起了问题。 foo()的主体也很长,里面有很多函数调用,所以写if (stop == true) return; 在函数中不是一个选项。 有没有比制作阻塞线程更好的方法呢? 如果是这样,怎么样? 如果没有,我将如何制作阻止线程?