如何使用ScheduledExecutorService重新计划任务?

卡尔:

我在Java文档中看到了这一点:ScheduledAtFixedRate,它说

如果该任务的任何执行遇到异常,将禁止后续执行

我不希望在我的应用程序中发生这种情况。即使看到异常,我也总是希望后续执行继续进行。我怎样才能从ScheduledExecutorService

豆腐啤酒:

用try / catch包围Callable.call方法或Runnable.run方法...

例如:

public void run()
{
    try
    {
        // ... code
    }
    catch(final IOException ex)
    {
        // handle it
    }
    catch(final RuntimeException ex)
    {
        // handle it
    }
    catch(final Exception ex)
    {
        // handle it
    }
    catch(final Error ex)
    {
        // handle it
    }
    catch(final Throwable ex)
    {
        // handle it
    }
}

请注意,捕获除编译器也告诉您的内容之外的其他内容(在我的示例中为IOException)不是一个好主意,但是有时候,这听起来像其中之一,只要您正确处理,它就可以解决。

请记住,诸如Error之类的事情非常糟糕-VM内存不足等...因此请小心处理它们(这就是为什么我将它们分离到自己的处理程序中,而不是仅仅执行catch(最终Throwable ex)之类的原因其他)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章