【问题标题】:Checking if ObjectOutputStream is still serializing检查 ObjectOutputStream 是否仍在序列化
【发布时间】:2014-09-21 21:09:13
【问题描述】:

我正在开发一个简单的多人游戏,并且大部分时间都在工作,但有时在使用 ObjectOutput 编写对象时,我会得到:

java.io.IOException: 流活动

当 ObjectOutputStream 被重置同时仍在序列化一个对象时发生。我想知道是否有某种方法可以在重置之前等待 ObjectOutputStream 完成序列化,或者是否有其他解决方案来解决这个问题?

这是出错的代码:

try {
        objectWriter.writeObject(object);
        objectWriter.flush();
        objectWriter.reset();
    } catch (Exception e) {
        e.printStackTrace();
    }

【问题讨论】:

  • 你在使用线程吗?
  • @immibis 是的,有 2 个客户端和 1 个服务器在不同的线程上。
  • 他们使用的是同一个流吗?
  • @immibis 不,每个客户端都有自己的 ObjectOutputStream。
  • writeObject 之前是否抛出过任何异常(在此之前)?您是否在任何课程中覆盖 readObjectwriteObject

标签: java serialization objectoutputstream


【解决方案1】:

要么该代码位于类的私有 writeObject() 方法中,要么您有多个线程使用同一个流。

没有办法做到你的标题所要求的。你只需要确保它不会发生。

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 2010-11-25
    • 2016-05-19
    • 2011-02-22
    • 2010-12-02
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多