猿问

多线程业务处理逻辑

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

//业务逻辑

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

幕布斯7119047
浏览 677回答 3
3回答

ITMISS

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

幕布斯6054654

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

相关分类

Java
我要回答