Java Tomcat中的同步和异步请求处理有何不同?

Java Tomcat中的同步和异步请求处理有何不同?,java,tomcat,asynchronous,sync,nio,Java,Tomcat,Asynchronous,Sync,Nio,我无法理解Tomcat中同步调用和异步调用之间的区别。 无论我在哪里使用NIO。我有几千个连接,由几个Tomcat线程管理。当长同步请求收到时,线程从Tomcat线程池借用并处理该请求。此线程等待较长的进程完成,然后将结果写入HTTPResponse。因此,资源浪费只是为了等待。当收到长异步请求时,Tomcat线程创建单独的线程,长进程在这个新线程中启动,Tomcat线程立即返回池中。 我理解对了吗?如果是这样,我看不出同步模式和异步模式之间有什么区别,因为在这两种模式中使用的线程数量相同区别在

我无法理解Tomcat中同步调用和异步调用之间的区别。 无论我在哪里使用NIO。我有几千个连接,由几个Tomcat线程管理。当长同步请求收到时,线程从Tomcat线程池借用并处理该请求。此线程等待较长的进程完成,然后将结果写入HTTPResponse。因此,资源浪费只是为了等待。当收到长异步请求时,Tomcat线程创建单独的线程,长进程在这个新线程中启动,Tomcat线程立即返回池中。 我理解对了吗?如果是这样,我看不出同步模式和异步模式之间有什么区别,因为在这两种模式中使用的线程数量相同

区别在于“拉”和“推”。是的,您是正确的,无论哪种方式,都必须分配一个线程来执行该工作

但是对于sync请求,您必须手动创建工作线程并从客户端轮询任务结果,而对于async,服务器将在任务完成时将结果推送到客户端


后者的效率稍高一些,因为您的服务器不必为每个结果处理许多轮询请求。

谢谢,我明白了。同步请求是一个线程为一个请求借用并等待和提取必要数据的情况。异步请求是这样一种情况:只有一个线程与请求分离,它等待数据并将数据推送到异步上下文请求,即客户端的输出流。当客户端生成aync请求时,它不会创建任何额外的线程,但其异步上下文位于订阅服务器列表中。当数据出现时,一个线程遍历此列表并将数据写入每个异步上下文。结果是-sync-request意味着每个请求一个线程,async-request意味着多个并发请求有一个(或多一点)线程

谢谢你的回答。但是,使用SOAP调用的异步模式的用例是什么?