1

我有一个 Java 方法,它使用 ScheduledExecutorService 来安排任务定期运行。

我想包含代码来检查:

  1. 任务调度成功(即返回true)
  2. run()部分被尝试(现在和将来),如果运行部分不起作用,则调用方法:doOtherStuff()

我正在考虑使用 try/catch 来实现这一点。我的想法是否正确?

我的代码是这样的:

private void scheduleCheck()
{
    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

    executor.scheduleAtFixedRate(new Runnable() 
    {
        // Task to be scheduled
        public void run() 
        {               
            periodicCheck();
        }
    }, 1, 10, TimeUnit.SECONDS);
}

对于 1. 我是否应该在调度任务的代码周围添加一个 try/catch,如果“try”部分运行到最后,则布尔变量设置为 true。

对于 2. 我可以再次在 run() 部分中使用 try/catch,并在 catch 位中调用一个方法(如果运行失败)。

我在想一些事情。谁能看到我遗漏的任何东西,或者我的逻辑中有任何明显的缺陷?

    private boolean scheduleCheck()
{
    boolean isScheduled = false;
    try
    {
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
        executor.scheduleAtFixedRate(new Runnable() 
        {
            // Task to be scheduled
            public void run() 
            {               
                try
                {
                    periodicCheck();
                }
                catch(java.lang.exception e)
                {
                    doOtherStuff();
                }
            }
        }, 1, 10, TimeUnit.SECONDS);
        isScheduled = true;
    }
    catch(java.lang.exception e)
    {
    }
    return isScheduled;
}   
4

0 回答 0