Java 使用多线程服务单个HTTP请求
Angular 4应用程序向已部署在WebSphere8servlet容器中的JavaSpringMVC应用程序发送记录列表。然后将该列表插入临时表中。批插入后,将进行过程调用,以便执行一些计算并返回结果。根据插入到临时表中的列表的大小,它可能需要3000ms(N~500)、6000ms(N~1000)、50000+ms(N>2000)之间的任意时间 我的任务是创建数据块,同时将它们发送到数据库进行处理。在线程(未来)返回结果之后,我将聚合它们并返回到客户端。总而言之,我将把一个同步调用拆分为多个异步进程(同时执行),并通过启动HTTP调用的同一线程返回到客户机,该线程将登陆到我的控制器中 一切都会好的,如果我的一位更有经验的同事不强烈反对这种方法,我就不会问这个问题。他的理由是,使用这种方法容易由于线程中断/超时/信号量等原因而出现异常。Hi甚至认为应该避免在web容器中使用多线程,因为如果Servlet容器的线程用完,它可能会使Servlet容器崩溃。 他建议,我们应该让浏览器发送多个AJAX请求,并将数据聚合/呈现成块Java 使用多线程服务单个HTTP请求,java,multithreading,spring-mvc,websphere,Java,Multithreading,Spring Mvc,Websphere,Angular 4应用程序向已部署在WebSphere8servlet容器中的JavaSpringMVC应用程序发送记录列表。然后将该列表插入临时表中。批插入后,将进行过程调用,以便执行一些计算并返回结果。根据插入到临时表中的列表的大小,它可能需要3000ms(N~500)、6000ms(N~1000)、50000+ms(N>2000)之间的任意时间 我的任务是创建数据块,同时将它们发送到数据库进行处理。在线程(未来)返回结果之后,我将聚合它们并返回到客户端。总而言之,我将把一个同步调用拆分为多
你能帮我理解哪种方法更好,为什么更好吗?我想说你的方法更好
发送并行请求听起来比编写一堆服务器端代码更简单,但这并不是因为将工作从servlet转移到多个线程上有任何固有的问题。在这种情况下,客户端不仅要处理数据呈现,还要处理聚合。这会不会增加客户端的开销?。我已经编写了服务器端代码(完全没有经过测试),但如果不是这样做的话,我准备放弃它……我不认为这两种方法客观上是对的还是错的