3

我有这个代码:

    exec = Executors.newSingleThreadScheduledExecutor();
    exec.scheduleAtFixedRate(new Runnable() {
      @Override
      public void run() {
          System.err.println("Getting messages....");
          getNewMessagesAndAddToTextArea();
      }
    }, 0, GET_MESSAGE_INTERVAL, TimeUnit.SECONDS);

exec 在我的班级中声明为: private ScheduledExecutorService exec;

我收到“获取消息....”消息 2 次,然后它就停止了。我无法解释为什么。图形用户界面仍在工作。那么这里发生了什么?

4

1 回答 1

7

我怀疑getNewMessagesAndAddToTextArea是抛出异常。

验证该想法的第一种方法是添加

System.err.println("Finished getting messages");

在你的run方法结束时。如果(如我所料)您第二次没有看到,您应该考虑包含一个记录异常的 try/catch 块。您需要考虑如何处理未捕获的未经检查的异常......

于 2013-06-10T21:09:21.003 回答