如果5分钟内没有用户输入,如何自动关闭java程序?

时间:2018-05-06 13:53:39

标签: java calculator

所以,如果用户在java中没有与程序交互5分钟,我需要在5分钟后创建一个自动关闭的计算器。我不知道该怎么做。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

如果线程有问题,你应该在渲染方法中获得某种时间差异。如果不是,您需要在交互时更新成员:

long msTimeLastUsed = System.currentTimeMillis();

然后在你的事件循环中检查

if (System.currentTimeMillis() - msTimeLastUsed > 1000 * 60 * 5)
     System.exit(0);

我建议只使用线程作为最后的手段,比如当你需要推动你的所有CPU时。

答案 1 :(得分:0)

您需要运行后台Thread。该线程将有一个while循环,可以每隔30秒左右检查一次,看看程序执行的时间是否超过5分钟。如果是,请执行System.exit(0)。等待实施。

编辑:这是实施。当用户处于活动状态时,您可以调用active方法重置lastActiveTime

在回复John的帖子时,当事件循环被阻止等待来自用户的I / O时,可能需要Thread

class ExitIfInactive extends Thread { 
  private long lastActiveTime;
  private long timeout;

  public ExitIfInactive(long timeout) { 
    this.timeout = timeout;
    this.active();
  }

  // call inside event loop to reset
  public void active() {
    this.lastActiveTime = System.currentTimeMillis();
  }

  public void run() {
    while(true) {
      if (System.currentTimeMillis() - lastActiveTime > this.timeout) {
        System.exit(0);
      }

      try {                                                                                                                                           
        Thread.sleep(1000); // granularity to check
      } catch(InterruptedException e) {
        System.exit(-1); 
      }
    }
  }
}

class Main {
  public static void main(String[] args) {
    ExitIfInactive exitIfInactive = new ExitIfInactive(300_000L); // 5 minutes
    exitIfInactive.start();
  } 
}