1

ScheduledExecutorService を使用して定期的に実行するタスクをスケジュールする Java メソッドがあります。

それを確認するコードを含めたいと思います:

  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」部分が最後まで実行される場合、ブール変数をtrueに設定して、タスクをスケジュールするコードの周りにtry/catchを追加するだけでよいでしょうか。

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