0

我正在使用Tomcat。文档ServletResponse.flushBuffer说:“强制将缓冲区中的任何内容写入客户端。调用此方法会自动提交响应,这意味着将写入状态代码和标头。” 但我无法从中弄清楚:doPost在客户端成功收到响应之前,我的方法是否会在此函数上被阻止?如果连接时间不佳,可能会ServletResponse.flushBuffer冻结线程?或者交付是异步执行的?

我的目标是衡量我的客户看到响应所需的时间。我想在调用 之前和之后测量时间flushBuffer,但我不确定这段时间是否涵盖了将消息传递到客户端套接字的所有过程。

问候, &rzej

4

1 回答 1

1

在客户端成功收到响应之前,我的 servlet 会在此功能上被阻止吗?

不会。当前线程将被阻塞,直到整个响应都写入套接字发送缓冲区。

如果连接时间不佳,ServletResponse.flushBuffer 是否会冻结 servlet?

不,只有当前线程。

或者交付是异步执行的?

是的,但必须先缓冲响应,见上文。如果由于对等方未读取或数据尚未交付和确认而导致缓冲区填满,则写入线程将阻塞,直到有足够的空间。

于 2013-06-05T07:52:02.927 回答