【发布时间】:2012-04-25 06:08:22
【问题描述】:
有人刚刚指出 AsyncContext.start() 是一种从 Web 容器中启动线程的方法。我想知道将此调用添加到 Java EE 的预期用例是什么?
【问题讨论】:
标签: jakarta-ee servlets servlet-3.0
有人刚刚指出 AsyncContext.start() 是一种从 Web 容器中启动线程的方法。我想知道将此调用添加到 Java EE 的预期用例是什么?
【问题讨论】:
标签: jakarta-ee servlets servlet-3.0
AsyncContext.start() 不太可能启动一个新线程。它几乎肯定会使用容器线程(来自用于处理请求的同一线程池)。例如,Tomcat 将始终使用请求处理线程池中的容器线程。
用例是您不希望“主”线程在主线程可以继续之前必须等待您放入 Runnable 中的任何内容完成的任何情况。
我能想到的大多数示例都是相当人为的,但是如果您使用 Servlet 3.0 异步实现了某种消息传递应用程序,并带有 5 个连接的客户端,则主线程可能会遍历 5 个客户端中每个客户端的 AsyncContext 并调用 start( ) 在每个上下文中发送广播消息。这样主线程就不会被慢速客户端阻塞。
【讨论】: