首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# APM / IHttpAsyncHandler的java模拟

C# APM / IHttpAsyncHandler的java模拟
EN

Stack Overflow用户
提问于 2011-02-16 23:45:28
回答 2查看 324关注 0票数 2

我已经通过IHttpAsyncHandler使用.Net异步编程模型在C#中实现了异步http请求处理。

我是java新手,但我想完成相同的结束--开始一个请求,让它放弃请求处理线程池线程并异步处理,在所有处理完成时发出信号,触发处理程序的结束请求回调并将处理结果写入响应流。

我确信这肯定存在,而且我不需要推出我自己的解决方案,但是搜索异步http处理只能找到以AJAX为中心的解决方案(我希望在服务器端进行异步处理)。

java中有没有类似于IHttpAsyncHandler的东西?

EN

回答 2

Stack Overflow用户

发布于 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。

票数 1
EN

Stack Overflow用户

发布于 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方法中执行以下操作:

代码语言:javascript
运行
复制
    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 done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5018546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档