1

Callable コードでは、シグナリングを使用して複数の終了動作を別のスレッドに通知します。Callable オブジェクトは、Executor の FutureTasks でキューに入れられます。また、お並びいただいた後、キャンセルさせていただく場合がございます。

さて、私の問題は、シグナリングが機能するために少なくとも開始されているタスクに依存していることですが、タスクを実行する機会が得られる前にキャンセルされたとマークされている場合、エグゼキューターはタスクをスキップするように見えます。

したがって、タスクが常に開始され、実行中に (InterruptedException によって) 常にキャンセルされることを保証する方法はありますか。

また、タスクが開始されずに失敗したかどうかを確認できますか?

4

1 に答える 1

2

おそらく FutureTask クラスをサブクラス化し、そのdone()メソッドをオーバーライドしてシグナリングを実行できます。ドキュメントによると、タスクがキャンセルされた場合でも、このメソッドを呼び出す必要があります。

于 2010-12-14T12:54:45.570 に答える