0

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

4

1 回答 1

2

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

用例是您不希望“主”线程在主线程可以继续之前必须等待您放入 Runnable 中的任何内容完成的任何情况。

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

于 2012-04-25T10:22:58.783 回答