PrintWriter out = response.getWriter();
for(int i=0;i<10;i++){
Thread.sleep(1*1000);
out.println("i="+i);
out.flush();
}
out.close();
看起来应该是每秒钟向浏览器响应一次数据。但是结果不是这样的,是10秒以后才给所有数据全部响应回来。。
前端用的ajax。
PrintWriter out = response.getWriter();
for(int i=0;i<10;i++){
Thread.sleep(1*1000);
out.println("i="+i);
out.flush();
}
out.close();
请各位大神帮忙解答一下,谢谢!
------解决方案--------------------
输入输出流一般都是用缓冲的,也就是说不是每次你要它读/写一个或少数几个字节,他就立马执行的,而是将这些请求放入缓冲,积累到一定量的时候才一起执行,以提高效率。
本案例提问者认为1秒响应一次源于对out.flush机制的误解,根据上述理论,out.flush并非响应数据,而只是将缓存流数据转移到输出流中。
以上解答如果有错误之处,望批评指正.
------解决方案--------------------
+1