【问题标题】:How To Unblock Java ObjectInputStream?如何解除对 Java ObjectInputStream 的阻塞?
【发布时间】:2015-05-04 22:57:51
【问题描述】:

在我的程序中,我在服务器和客户端之间使用 ObjectInput 和 ObjectOutput 流。在我的项目上工作时,我制作了许多辅助测试类和项目来测试我的新工具,有时当我制作一个 ObjectInputStream 时,它会卡在那里。我也查看了oracle,看看他们是否有答案,但我不太清楚我需要做什么。

Oracle 说“从流中读取并验证了序列化流标头。此构造函数将阻塞,直到相应的 ObjectOutputStream 写入并刷新标头。”

我知道必须对数据进行序列化才能发送,并且我的类实现了 Serializeable,尽管我觉得它对解决我的问题没有多大作用。在一些测试项目中,我一直让我的 ObjectInputStreams 运行良好,但有时它会冻结。

任何帮助将不胜感激, 谢谢

【问题讨论】:

    标签: java io network-programming objectinputstream


    【解决方案1】:

    您的问题非常含糊,但通常每个对等方都会在同一个套接字上创建ObjectOutputStreamObjectInputStream。必须按此顺序完成,否则可能会出现死锁,出于同样的原因,需要在两端获得套接字后立即完成。

    【讨论】:

    • 抱歉含糊不清的问题,但感谢您的回答。只是为了确保我明白你所说的是服务器端必须在客户端之前启动其对象输入/输出流吗?还有,先进先出的顺序重要吗?
    • 我只能建议您再次阅读我的答案。我清楚地表达了自己,并谈到了你刚刚提出的一切。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多