首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferedReader ready方法

BufferedReader ready方法
EN

Stack Overflow用户
提问于 2013-07-07 17:06:43
回答 1查看 465关注 0票数 3

我观察到java.io.BufferedReader的ready方法有一个奇怪的行为,它在Tomcat中返回false,而在Jetty中运行相同的servlet时返回true。

代码语言:javascript
复制
BufferedReader bufferedReader = httpRequest.getReader();
System.out.println(bufferedReader.ready());
/** Perform some read operation */

输出:

代码语言:javascript
复制
true //Jetty
false //Tomcat

我知道BufferedReader#ready方法只表示下一次读操作不会阻塞输入(True)还是不会阻塞(False),但我无法理解它在两个web服务器环境中的行为差异。

如果以前有人遇到过这种情况,我需要帮助才能更好地理解这种情况?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-07 17:31:17

如果读取器可以保证下一次读取不会阻塞,则ready()返回true。它返回false这一事实并不能保证下一次读取将阻塞,并且Reader实现被授权总是从该方法返回false。

Jetty和Tomcat是Java容器的两个不同的实现,每个都提供了自己的HttpServletRequest实现。因此,他们显然做出了不同的设计选择,但他们每个人都尊重规范。

您不应该简单地依赖此方法。我从来没有遇到过使用它有用的案例。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17510690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档