这个例子是基于书中的一个例子Restlet in Action
。
如果我尝试
public class StreamResource extends ServerResource
{
@Get
public Representation getStream() throws ResourceException, IOException
{
Representation representation = new WriterRepresentation(MediaType.TEXT_PLAIN)
{
@Override
public void write(Writer writer) throws IOException
{
String json = "{\"foo\" : \"bar\"}";
while (true)
{
writer.write(json);
}
}
};
return representation;
}
}
它可以工作,并不断将 json 字符串发送到客户端。
如果我像这样在 while 循环中引入延迟
String json = "{\"foo\" : \"bar\"}\r\n";
while (true)
{
writer.write(json);
try
{
Thread.sleep(250);
}
catch (InterruptedException e)
{}
}
我希望客户能在一秒钟内获得 4 次数据,但客户似乎什么也得不到。
谁能解释为什么引入Thread.sleep()
这样做?将流数据延迟引入客户端的好方法是什么?