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