3

ネットワーク経由でデータをフェッチするための単一スレッドのエグゼキュータ サービスがあります。

ユーザーが検索ボックスに入力しているときに、考えられるネットワーク タスクをキューに入れています。私が望むのは、以前のすべてのリクエストをキャンセルし、エンキューして最新のリクエストのみをすぐに実行することです。

私の現在のアプローチは、execute() および submit() メソッドをオーバーライドし、super を呼び出す前にキューをクリアすることです。

これについて何か考えはありますか?

4

1 に答える 1

5

それを取得しないでくださいFuture。callable をサービスに投稿したときに返されたものを保存し、cancel()それを実行したくない場合は future を保存してみませんか。

例えば

Future f1 = service.submit(some_task);

// later

f1.cancel(true); // will interrupt if running...

クリーナー IMO...

于 2012-02-09T00:53:52.130 に答える