AsyncContext.start()的预期用例是什么?

时间:2012-04-25 06:08:22

标签: java-ee servlets servlet-3.0

有人刚刚指出AsyncContext.start()是一种从Web容器中启动线程的方法。我想知道这个调用被添加到Java EE的预期用例是什么?

1 个答案:

答案 0 :(得分:2)

AsyncContext.start()不太可能启动新线程。它几乎肯定会使用容器线程(来自用于处理请求的相同线程池)。例如,Tomcat将始终使用请求处理线程池中的容器线程。

用例是指您不希望“主要”用户使用的任何内容。线程必须等待你在Runnable中放置的任何东西才能在主线程继续之前完成。

我能想到的大多数示例都是相当有意义的,但如果您使用Servlet 3.0异步与5个连接的客户端实现了某种消息传递应用程序,则主线程可能会遍历5个客户端中的每个客户端的AsyncContext并在每个上下文上调用start()以发送广播消息。这样主线程就不会被慢客户端阻止。