检查计划任务状态

时间:2016-03-31 15:32:49

标签: java multithreading executorservice scheduledexecutorservice

我有一个使用ScheduledExecutorService处理多个Runnable的应用程序:每个应用程序都以固定费率计划,只要应用程序必须,它就会存活。

我需要一个解决方案,如果这些线程中的任何一个因某些异常而被终止时会收到通知,所以我可以再次安排它们。

我可以使用任何模式来解决这个问题吗?或者我在我的应用程序中使用了错误的对象?

2 个答案:

答案 0 :(得分:0)

如果只是简单地包装class CatchingRunnable implements Runnable { private final Runnable delegate; CatchingRunnable(Runnable delegate) { this.delegate = delegate; } @Override public void run() { try { delegate.run(); } catch (RuntimeException e) { // Handle the exception somehow, e.g. log it. } } } 以便异常永远不会导致任务被取消,可能会更容易:

runnable

现在通过以下方式安排executor.scheduleAtFixedRate(new CatchingRunnable(runnable), delay, period, unit);

module.exports = {

  attributes: {
    name: {
      type: 'string',
      required: true
    },
    description:{
      type: 'string'
    },
    project: {
      model: 'project',
      required: true
    }, ...

然后你永远不必担心重新安排它们。

答案 1 :(得分:0)

如果ScheduleFuture完成,您可以维护一个处理程序重新提交。