有人刚刚指出AsyncContext.start()是一种从Web容器中启动线程的方法。我想知道这个调用被添加到Java EE的预期用例是什么?
答案 0 :(得分:2)
AsyncContext.start()不太可能启动新线程。它几乎肯定会使用容器线程(来自用于处理请求的相同线程池)。例如,Tomcat将始终使用请求处理线程池中的容器线程。
用例是指您不希望“主要”用户使用的任何内容。线程必须等待你在Runnable中放置的任何东西才能在主线程继续之前完成。
我能想到的大多数示例都是相当有意义的,但如果您使用Servlet 3.0异步与5个连接的客户端实现了某种消息传递应用程序,则主线程可能会遍历5个客户端中的每个客户端的AsyncContext并在每个上下文上调用start()以发送广播消息。这样主线程就不会被慢客户端阻止。