【发布时间】:2014-03-08 03:09:45
【问题描述】:
我在某个地方读到了让我不确定的地方,并正在寻找另一种方法。过于频繁地调用reset() 是否会导致网络紧张,或者对此没有必要?
我正在使用 TCP 通过 ObjectOutputStream 发送对象。对象值在再次写入之前已更改。现在相同的对象但包含不同的值,没有reset() 它重新发送在它之前发送的缓存对象的引用,读取它没有变化。由于这种压力,我不确定使用reset() 是否是一个好主意。我应该寻找其他方法吗?
示例代码如下:
Socket socket = new Socket(ip, port);
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(bos);
while(true){
oos.writeObject(object);
oos.flush();
oos.reset();
object.x++;
}
【问题讨论】:
-
我会在 flush() 之前调用 reset() 作为微优化,但您可以在每个对象上调用它。
-
@PeterLawrey 为什么?而不是事后调用它?
-
@EJP 如果在 flush() 之前 reset(),reset() 会立即发送,另一端可以删除对对象的引用。如果你先flush(),然后reset(),另一端可能会保持对象一段时间,这是一种浪费,因为它接下来要做的就是丢弃它。
标签: java tcp reset outputstream