有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

其他时候,我的线程会死锁,因为发送方线程没有发送数据。当我在调用flush()方法(例如,writeUTF())之后立即手动调用flush()方法时,此问题已得到修复

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


共 (1) 个答案

  1. # 1 楼答案

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