我必须在异步方法之间进行同步。
我有三种方法说
方法1,方法2,方法3,具有以下防御
void method1() {
method2();
//some code
method3();
}
@Async
void method2() {
//some code
}
@Async
void method3() {
//some code
}
我的要求是我要确保在method2之后执行method3。在做了一些搜索后,我得出结论,使用一个新的SimpleThreadPoolTaskExecutor,池大小配置为1,并将其用于方法method2和method3。我想知道是否有比这更好的选择。我是Spring Task调度的新手。抱歉没有提供可演示的示例。
答案 0 :(得分:1)
void method1() {
Semaphore semaphore = new Semaphore(1);
semaphore.aquire();
method2(semaphore);
method3(semaphore);
}
@Async
void method2(Semaphore semaphore) {
//do some stuff
semaphore.release();
}
@Async
void method3(Semaphore semaphore) {
semaphore.aquire();
// do some stuff
}