Java spring引导控制器中的多线程

Java spring引导控制器中的多线程,java,multithreading,postgresql,spring-boot,callable,Java,Multithreading,Postgresql,Spring Boot,Callable,下面是我的一个spring控制器中的代码。在这里,我需要使用多线程将一些数据存储在postgres数据库中,这样我就不用等到它将数据保存到数据库中,然后我可以将响应发送回调用的API。我如何实现这一点 //billingLogService.saveBillingLogDetails(Object); if (!Util.isNull(personId) && !Util.isNull(personConnectionData)) { return new Callabl

下面是我的一个spring控制器中的代码。在这里,我需要使用多线程将一些数据存储在postgres数据库中,这样我就不用等到它将数据保存到数据库中,然后我可以将响应发送回调用的API。我如何实现这一点

//billingLogService.saveBillingLogDetails(Object);
if (!Util.isNull(personId) && !Util.isNull(personConnectionData)) {
    return new Callable<Map<Long, PersonConnectionTo>>() {
        @Override
        public Map<Long, PersonConnectionTo> call() throws Exception {
            Map<Long, PersonConnectionTo> connectionTextMap =
                profileService.getconnectionTextForFocusCompany(focusCompanyId, personId, personConnectionData);
            return connectionTextMap;
        }
    };
}
//billingLogService.saveBillingLogDetails(对象);
如果(!Util.isNull(personId)和&!Util.isNull(personConnectionData)){
返回新的可调用(){
@凌驾
公共映射调用()引发异常{
映射连接文本映射=
profileService.getconnectionTextForFocusCompany(focusCompanyId、personId、personConnectionData);
返回connectionTextMap;
}
};
}

方法之一是将整个逻辑(您希望在单独的线程中运行)放入某个服务类的方法中。
然后
1.用
@Service
或等效项注释类。
2.用
@Async

3.使用
@EnableAsync


这应该足够了

您可以看看使用Spring的
@Async
注释。获取异常警告9071---[cTaskExecutor-2]o.h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:0,SQLState:42883错误9071---[cTaskExecutor-2]o.h.engine.jdbc.spi.SqlExceptionHelper错误:运算符不存在:bigint=bytea提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。位置:123错误9071-[cTaskExecutor-2]。a.i.SimpleAsyncUncaughtExceptionHandler:调用异步方法“public void com.equal.bsp.service.impl.BillingLogServiceImpl.saveConnectionText(java.lang.Long)”时发生意外错误。这与您的代码相关,与在单独线程中运行完全相关