@async方法之间的同步

时间:2015-12-18 09:38:42

标签: java spring asynchronous

我必须在异步方法之间进行同步。

我有三种方法说

方法1,方法2,方法3,具有以下防御

void method1() {
    method2();
    //some code
    method3();
}

@Async
void method2() {
    //some code
}


@Async
void method3() {
    //some code
}

我的要求是我要确保在method2之后执行method3。在做了一些搜索后,我得出结论,使用一个新的SimpleThreadPoolTask​​Executor,池大小配置为1,并将其用于方法method2和method3。我想知道是否有比这更好的选择。我是Spring Task调度的新手。抱歉没有提供可演示的示例。

1 个答案:

答案 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
}