2016-06-27 8 views
1

私はRunnableを受け付けるスケジューラを書いています。これは、同期または非同期の実行のためにキューに入れられます。RunnableにInterruptedExceptionをスローするように指示する方法はありますか?

SomeScheduler.interrupt(int taskId)を実装して、InterruptedException()がスレッド内からスローされるようにしたいと考えています。

これが可能ですか、これについてすべて間違っていますか?

+0

私は 'sleep'メソッドと考えます – uzaif

+0

submit()またはexecute()を使用していますか?この質問を見てください:http://stackoverflow.com/questions/3929342/choose-between-executorservices-submit-and-executorservices-execute/35424481#35424481。 Future.get()は、InterruptedExeceptionを取得し、是正措置を取るのに便利です。 –

答えて

2

Thread sは中断できますが、Runnableはrunメソッドを実装するクラスに過ぎません。
それはスレッドに属していません。実行スレッドの実行を中断したい場合は、呼び出しスレッドを中断する必要があります。
これが実行される典型的な方法は、ExecutorServiceを使用することです。実行可能ファイルまたは実行可能ファイルを実行者サービスに送信すると、Futureが返され、Future#cancelメソッドを使用して特定のタスクを中断できます。
スレッドが割り込みステータスをチェックし、InterruptedExceptionをスローするコード(たとえば、Thread#sleepメソッド)をスレッドが実行していない限り、単にスレッドを中断してもInterruptedExceptionがスローされないことに注意してください。

+0

しかし、実行可能ファイルにはそれがないので、実行することはできません – Sarief

+0

@Sarief Runnableには何が入っていませんか? – Magnus

+0

InterruptedExceptionはありません。それはチェックされているので、>あなたはそれを署名に加えることはできません。 – Sarief

関連する問題