#前提
とあるSpring Bootアプリケーションを作成しています。
@Asyncアノテーションを付与することで、一部のサービスを非同期実行可能にしています。
しかし、その非同期実行の先で、一つのメソッド(以下、Aメソッド)に関しては排他制御をかけなければならないことが分かりました。
Aメソッドにはint型の引数があります。
1~8のいずれかが渡される予定です。
#分からないこと
引数で渡された数値を確認し、
現在Aメソッドが処理中の数値と同じものであれば、排他制御をかけたいと思っています。
つまり
- 引数1でAメソッド実行開始
- 引数2でAメソッド実行開始
- 引数7でAメソッド実行開始
- 引数2のAメソッド実行終了
- 引数2でAメソッド実行開始
- 引数7でAメソッド実行開始
上記の「状態6」の時点で排他制御をかけ、Aメソッド実行を待機させたいと考えています。
(もちろん、1、2、7以外の数値が引数で来た場合は、処理を開始します)
このような複雑な排他制御をかけるには、どうすれば良いでしょうか。
int型を引数に持つ他のメソッドをもう一つ作成し、Aメソッドを実行するかどうかを
そこで決める、なども考えたのですが・・・イマイチ実現する方法が分かりませんでした。
(Synchronizedを使えば実現できるのでしょうか・・・)
どなたかご教授願います。
回答1件
あなたの回答
tips
プレビュー