我有一个 Java 方法,它使用 ScheduledExecutorService 来安排任务定期运行。
我想包含代码来检查:
- 任务调度成功(即返回true)
- 该
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;
}