1

ExecutorService を使用して、将来実行されるタスクをスケジュールしていました。Callable を ExecutorService プールに送信して返された Future オブジェクトで get() を呼び出す前に、Callable が実行されるという「奇妙な」動作を見た後、いくつかのドキュメントを読んだところ、送信されたタスクが実行される間に実行されることがわかりました。送信されるか、遅くとも Future オブジェクトで get() が呼び出されたときに取得されます。

私の質問 - Callables をそれに送信し、get() が呼び出されたときにのみ実行できるクラスはありますか? この時点で、Callables を自分で管理し、自分で call() を呼び出すだけで実行の準備ができたように見えますが、目的を達成できるように思えますが、サービスが既に存在しないことを確認したかったのです。これを実現した実装。

要するに、送信された Callables がいつ呼び出されるかを制御できる ExecutorService の代替手段はありますか? 注 - 将来、それらを呼び出したい時間は可変であり、それらを呼び出さないと決定する可能性があるため決定されないため、ScheduledExecutorService プールはここでは機能しません。

どうもありがとう!

4

1 に答える 1

2

Queue<Callable>代わりにa を使用して、単にタスクのキューをポーリングしたいようです。

そうすれば、好きなだけタスクを送信して、自分の意志でそれらを 1 つずつ実行できます。

于 2012-11-18T21:05:18.460 に答える