我读到的地方让我不确定并寻找另一种方式。调用reset()
过于频繁会对网络造成压力,还是不必要?
我在ObjectOutputStream上使用TCP发送对象。在再次写入对象值之前,它们会被更改。现在相同的Object但包含不同的值,没有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++;
}
答案 0 :(得分:4)
调用reset()过于频繁会导致网络压力
相比什么?如果需要重置,那是因为您需要使用新值传输先前传输的对象。如果您不需要这样做,请不要调用它。如果确实需要这样做,网络开销与功能要求无关。
还是不必要的?
嗯?请翻译?
我在ObjectOutputStream上使用TCP发送对象。在再次写入之前,对象值会发生变化
因此您需要调用reset()或使用writeUnshared()。
现在是相同的Object,但包含不同的值,没有reset(),它会重新发送在它之前发送的缓存对象的引用,读取后没有任何更改。
正确。所以你不能这样做。
由于这种压力,我不确定使用reset()是否是一个好主意。
什么压力?唯一的“压力”是你传递物体的新价值,而你的功能要求决定了你必须这样做。所以你没有选择。
我应该寻找其他方式吗?
没有别的办法。要么必须传输对象的新值,要么不传输。如果这样做,所有解决方案都基本相同。如果不这样做,请不要。