你都已经异步了,直接返回啊,把处理逻辑丢到一个线程里,用线程池执行。举例:
processService类://service一般是单例
private static ExecutorService pool = Executors. newSingleThreadExecutor();//创造一个线程池
public void executeJobInPool(MyThread t){//丢到线程池执行
pool.execute(t);
}
MyThread类:
public class MyThread inplements Runnable(){
private xxxEntity;//把需要处理的数据封装到一个对象里
public MyThread (xxxEntity){
this.xxxEntity = xxxEntity;//构造
}
public void run() {
....//处理
}
}
xxxAction类:
private ProcessService processService;
...get set
@requestMapping("xxx.action")
public void processJob(HttpRequest req,HttpResponse response){
xxxEntity e = new xxxEntity();
e.setxxx //根据req构造xxxEntity
MyThread t = new MyThread (e);
processService.executeJobInPool(t);//丢到线程池执行,异步
HashMap result = new HashMap();
result.put("flag","success");//后台处理中的标志
response.getWriter().write(JsonUtil.toJson(result));
}
---纯手打,xxxAction中丢到线程池里面执行后,会立即走下一步的,这样就能即时返回给前台了
追问在服务器那块单独写个长连接,不破坏原有的处理代码,能不能解决这个问题啊?
追答长连接能及时返回response吗?这个不是很清楚
追问我只记得经理说每次提交的数据后返回的response存在一个map里 ,然后根据消息id取,他大概什么意思啊?
追答这个问你经理啊,哥们。。你在百度知道问,首先,大家不知道你的项目架构,其次,感觉你的要求还有点小复杂,要看具体代码。 So,直接问经理或者同事就好了。 在知道问的话,大家只能提供给你一个大概的思路
本回答被提问者采纳