Java 暂停线程执行,并根据用户输入恢复

Java 暂停线程执行,并根据用户输入恢复,java,multithreading,Java,Multithreading,我有一个线程推动JNativeHook.jar创建一个全局键盘和鼠标侦听器。根据用户的输入,线程可以这样工作 我想在用户(比方说)按下VK_空格时停止所有线程执行。我希望生成另一个线程,它也监视键盘,当它再次获得VK_空间时,它会告诉主线程继续 这种行为在Java中可能吗?它看起来如何 下面是一些与and.jar一起使用的代码 代码: 我个人会在GlobalKeyListenerExample中放置一个标志,当检测到某个组合键时,该标志将开始忽略任何其他传入的键,直到某个组合键被触发 您当前面临

我有一个线程推动JNativeHook.jar创建一个全局键盘和鼠标侦听器。根据用户的输入,线程可以这样工作

我想在用户(比方说)按下VK_空格时停止所有线程执行。我希望生成另一个线程,它也监视键盘,当它再次获得VK_空间时,它会告诉主线程继续

这种行为在Java中可能吗?它看起来如何

下面是一些与and.jar一起使用的代码

代码:


我个人会在
GlobalKeyListenerExample
中放置一个标志,当检测到某个组合键时,该标志将开始忽略任何其他传入的键,直到某个组合键被触发

您当前面临的问题是:1-知道您所处的线程以及“暂停”可能产生的影响;2-知道何时引发“取消暂停”组合…因为您不再侦听关键事件(因为您可能无意中停止了本机接口用于引发事件的线程…)

已更新

作为旁注…这个

public void run()
{
    while(alive){}
}
这不是个好主意。基本上,它使线程处于“运行”状态,不必要地消耗CPU周期。在您的情况下,我不确定您将如何实际纠正它…

在方法run:

public void run(){
 while(me!=null) //execute forever
   try{
      Thread.sleep(5);
      if(!alive) continue; //define pause

      ... do somthing   
   catch(Exception e){}
我们需要“线程”一直停留,检查这个“暂停”


重要!建议使用方法
public synchronized void setAlive(boolean value)
以避免“线程”冲突

我在GlobalKeyListenerExample中使用了main方法。为了举例,我在实际程序中使用了构造函数。我只是想知道如何做到这一点。我能收集到什么,
JNativeHook
正在使用单个线程进行事件调度(鼠标和键盘事件可能是从单独的线程调度的)-这意味着如果您阻止该线程,它将无法再向任何已注册的侦听器发送任何线程。当然,这需要额外的测试
public void run()
{
    while(alive){}
}
public void run(){
 while(me!=null) //execute forever
   try{
      Thread.sleep(5);
      if(!alive) continue; //define pause

      ... do somthing   
   catch(Exception e){}