0

私は、関数がインターネットに接続し、例外をスローする可能性があるスケジュールされたエグゼキューターを持っています。このエグゼキューターは、私が開発している SDK の一部であり、実装するアプリケーションに例外をスローする必要があります。

私は現在、次のことを行っています。

Runnable task = new Runnable() 
{
    @Override
    public void run(){
        WindowCallback();
    }
};

_windowTimer.scheduleAtFixedRate(task,
        0, this.SQSWindow, TimeUnit.MILLISECONDS);

WindowCallback() は例外をスローする必要がありますが、このコードを適切に機能させるために現在例外をキャッチしています。

私は次のことをしたいと思います

Callable task = new Callable() 
{
    @Override
    public Object call() throws Exception{
        WindowCallback();
    }
};

_windowTimer.scheduleAtFixedRate(task,
        0, this.SQSWindow, TimeUnit.MILLISECONDS);

ただし、Callable はエグゼキューターの scheduleAtFixedRate 関数と互換性がありません。

繰り返しタイマーで、例外をスローできる Callable をどのように使用しますか?

4

1 に答える 1

2

タスクが例外をスローすると、タスクは終了します。タスクは再スケジュールされません。そうでなかったとしても、例外は の内臓で失われScheduledExecutorServiceます。別のスレッドで発生したため、アプリケーションがそれを見つけることはありません。

したがって、タスク内のすべてをキャッチし、専用のExceptionCallback.

于 2013-07-08T13:28:58.963 に答える