0

カスタム ビジネス要件があります。一連のサービス コールを実行する必要があります。これらの各呼び出しにより、データベースに新しいレコードが作成されます。新しいサービス コールは、前のサービス コールによって DB に作成されたレコードを入力パラメータとして使用するため、前のサービス コールが終了してから次のサービス コールを実行する必要があります。

これらの各サービス コールを Future Tasks でラップし、Executors.newSingleThreadExecutor()これらのタスクをループで実行するために使用することにしました。

それで十分か、そうでない場合はより良い解決策を提案してください??

また、次のタスクを実行する前に配置する必要がありtask.isDone()ますか??

4

1 に答える 1

2

Executors.newSingleThreadExecutor() を使用することにしました。

あなたの要件を考えると良い選択です。

それで十分か、そうでない場合はより良い解決策を提案してください??

はい、ほとんどそうです。標準の JDK ライブラリでは、これがおそらく最良の方法です。

また、次のタスクを実行する前に task.isDone() を配置する必要がありますか??

いいえ。このエグゼキュータの javadoc には、「[...]タスクは順次実行されることが保証されており、一度に複数のタスクがアクティブになることはありません」と明示的に記載されています。

したがって、以前にアクティブだったタスクが終了する前に、タスクが開始されることはありません (成功したかどうかに関係なく)。それらをエグゼキューターに詰め込むだけで、それがあなたのために物事を処理します。

于 2014-12-16T07:23:08.037 に答える