Spring @Async 异步调用

在@Async加上@Transactional是无法起到事物控制的,因为其是基于异步处理操作

在@Async内部调用方法中使用@Transactional即可

如:@Async+@Transactional不生效 ,@Async方法调用 a、b方法,在a、b方法中加上@Transactional生效

使用@Async需要在启动类上加@EnableAsync

可以使用Future<T>获取结果

@Component
public class MyAsyncTask {
    @Async
    public Future<String> one() {
        return new AsyncResult<>("执行结果");
    }
}

@Autowired
private MyAsyncTask asyncTask;

@Test
void test() throws InterruptedException, ExecutionException {
    Future<String> one = asyncTask.one();
    while (!one.isDone()){
        Thread.sleep(1000);
    }
    System.out.println(one.get());
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章