gpt4 book ai didi

java - ObjectOutputStream对象有时会自动刷新。我如何确切知道何时依赖此行为以及何时手动刷新?

转载 作者:行者123 更新时间:2023-12-03 11:53:05 25 4
gpt4 key购买 nike

我注意到,有时,在一个对象输出上调用诸如writeUTF()之类的ObjectOutputStream对象的write方法以通过套接字发送值的线程会自动刷新数据,因此我不需要在该对象上调用flush()。通信线路另一端的线程可以很好地接收数据。即使发送方线程在循环下在流对象上写入了数百次,此方法仍然有效。

其他时候,我的线程陷入僵局,因为发送者线程没有发送数据。当我在调用后立即手动调用flush()方法(例如writeUTF())时,此问题已解决。

我怀疑这是随机的。我认为在某种特定情况下,写入流的线程会自动刷新数据。我想知道这些情况如何,如果有的话。

最佳答案

这取决于实现,并且可能会根据Java的平台,版本和内部版本而有所变化。最好的选择是在需要时调用flush()。如果没有要刷新的数据,则对flush()的调用非常快,因此不会显着降低程序速度。

关于java - ObjectOutputStream对象有时会自动刷新。我如何确切知道何时依赖此行为以及何时手动刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060637/

25 4 0
文章推荐: c# - 在Windows上,C#在数据到达之前或之后,Socket.BeginReceive()是否占用后台线程?
文章推荐: java - SocketChannel : Why if I write msgs quickly the latency of each message is low, 但是当我每 30 秒写一个 msg 时延迟很高?
文章推荐: javascript - 如何使用不同的链接制作一个带有 div 的 anchor
文章推荐: javascript - 事件处理程序和