springboot java中的异步方法

问题描述

我正在尝试创建一个 Rest API,该 API 必须异步执行后台数据库提取操作,并在不等待后台执行完成的情况下将事务 ID 返回给调用方。 我目前已经使用 executor Executor 实现了这一点。但是我得到一个空指针异常,因为父线程在可运行任务被执行之前完成了操作。有什么解决办法吗? 在这里,甚至在数据库操作开始执行之前就调用了返回的 ResponseEntity。

@Configuration
@EnableAsync
public class AsynchConfig {
    
    @Bean(name = "taskExecutor")
    public Executor taskExecutor()
    {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(2);
        executor.setMaxPoolSize(2);
        executor.setQueueCapacity(100);
        executor.setThreadNamePrefix("CurrentThread -");
        return executor;
    }

Rest API 如下:

@ApiOperation("")
public ResponseEntity<?> uploadCSVSendCommunication(@RequestParam String parameters)
{
asyncConfig.taskExecutor().execute(() -> 
        {
            //perform DB validations in a service

        }   );

        asyncConfig.taskExecutor().execute(() -> 
        {
        //Insert a record into transaction table
        
        if(!statusId.isEmpty())
        //set the status object;
        
        });


        return new ResponseEntity<>(statusObject,HttpStatus.OK);   
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)