我已经通过IHttpAsyncHandler使用.Net异步编程模型在C#中实现了异步http请求处理。
我是java新手,但我想完成相同的结束--开始一个请求,让它放弃请求处理线程池线程并异步处理,在所有处理完成时发出信号,触发处理程序的结束请求回调并将处理结果写入响应流。
我确信这肯定存在,而且我不需要推出我自己的解决方案,但是搜索异步http处理只能找到以AJAX为中心的解决方案(我希望在服务器端进行异步处理)。
java中有没有类似于IHttpAsyncHandler的东西?
发布于 2011-03-16 09:31:42
Java servlet3.0添加了类似于ASP.NET的异步支持。
http://blogs.oracle.com/enterprisetechtips/entry/asynchronous_support_in_servlet_3
在较新版本的servlet容器中提供了支持,例如Tomcat7.0。
发布于 2011-02-16 23:58:02
在Java Servlet中,每个请求都有自己的线程,并且不限制对其他请求的处理。因此,原则上它们已经是异步的:http://www.codestyle.org/java/servlets/faq-Threads.shtml
AFAIK,.Net中的IHttpAsyncHandler应该是更高性能的,但并不是每个人都同意:http://geekswithblogs.net/SanjayU/archive/2009/01/06/ihttphandler-vs-ihttpasynchandler.aspx
更新:
要启动多个并行任务并等待所有任务完成,最好使用ExecutorService。您可以在Servlet方法中执行以下操作:
ExecutorService executor = Executors.newCachedThreadPool(numThreads);
for (int i = 0; i < numParallelTasks; i++) {
Runnable worker = new MyRunnable();
executor.execute(worker);
}
// This will make the executor accept no new threads
// and finish all existing threads in the queue
executor.shutdown();
// Wait until all threads are finish
while (!executor.isTerminated()) {
}
// all tasks donehttps://stackoverflow.com/questions/5018546
复制相似问题