Java scheduleAtFixedRate在2次后停止工作

时间:2013-06-10 21:06:01

标签: java multithreading scheduledexecutorservice

我有这段代码:

    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次然后停止。我无法解释原因。 GUI仍然有效。那么这里发生了什么?

1 个答案:

答案 0 :(得分:6)

我怀疑getNewMessagesAndAddToTextArea正在抛出异常。

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

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

run方法的最后。如果(正如我所料)你第二次没有看到,你应该考虑包括一个记录异常的try / catch块。您需要使用未经检查的未经检查的异常来考虑您想要的内容...