多线程业务处理逻辑

1、springboot项目,post请求接口里面有一个
new Thread(new Runnable(){

//业务逻辑

})
意思就是前端每次请求接口都会开启一个线程进行业务逻辑处理。这样处理是因为线程里面的业务处理很耗时间(基本在半个小时左右),由于体验不允许一致卡住,所以在开启线程进行业务处理,接口返回一个标识,前端可以通过标识再另外的接口中进行业务中线程执行的百分比进行查看,线程业务逻辑里面有执行的阶段进行更新在数据库中,空另外一个接口进行查询。
2、线程里面的业务没有类似
while(true){}
相关的语句,因为执行业务中处理的业务和查询耗时,执行完成线程就结束。
3、目前的问题是前端如果并发请求(30次),之后在请求接口将无响应,重启正常
4、我自己大致知道应该为线程中内存没有释放,但是不知道怎么进行优化
5、主要想问的是对于这种处理耗时的请求应该怎么处理相对较好;让后对于线程的内存处理应该怎么处理和释放。

阅读 3.7k
3 个回答

用线程池吧,另外要判断任务是否逻辑上重复,重复的话要忽略后续请求

如楼上所说,可以用线程池处理。并用future来处理返回结果。
如果要高级一点的话。就使用消息中间件。实现请求异步。削锋填谷

通常来说需要线程池,现在的情况每来一个请求就会额外创建一个线程,创建线程的系统开销很大。

如果是耗时任务建议通过队列解耦和异步提高吞吐量。可以参考这篇:

https://crossoverjie.top/%2F2...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题