我在我的节目一定的功能,我想停止对键的按压。 我有一个本机键盘钩子设立用于这一目的。 现在,我调用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()
但我想在函数调用被阻止,无法无阻塞。 也有阻塞IO在调用foo()
所以我宁愿不中断处理,除非它是必要的,因为我不得不应付ClosedByInterruptException
异常和以前已经引起的问题。
另外的身体foo()
是很长,里面有它的许多功能调用,所以写if (stop == true) return;
在功能上是不是一种选择。
有没有更好的办法做到这一点不是让一个阻塞线程? 如果是这样,怎么样? 如果不是,我怎么会做一个阻塞线程?