首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列化ObjectInputStream无效的流头: 00000000

序列化ObjectInputStream无效的流头: 00000000
EN

Stack Overflow用户
提问于 2014-09-24 14:38:55
回答 1查看 929关注 0票数 0

对于特定的需求,我必须在不同机器上的几个tomcat实例之间共享简单的Java缓存对象。为此,我尝试对缓存对象进行序列化,并将其保存在共享目录中。在继续执行某些操作之前,该缓存对象将由所有实例引用反序列化/readobject,并且在处理操作之后,所有实例将更新/overwriteserialize/writeobject。在内部,我将在序列化/反序列化之前创建一个标志文件为空,并在序列化/反序列化之后将其删除。因此,如果标志文件可用,则缓存一个实例正在使用的对象,因此其他实例应该等待处理。

它在负载最小的时候工作,但当负载较高时,我开始获得。我相信这可能是因为死锁。有没有办法确保单个文件的同时处理不会导致这个问题。我不能使用Java同步,因为它是特定于实例的。非常感谢您的帮助。

代码语言:javascript
复制
java.io.StreamCorruptedException: invalid stream header: 00000000
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
EN

回答 1

Stack Overflow用户

发布于 2014-09-24 14:48:53

通过文件共享数据可能很难做到正确。您可能会考虑使用Chronicle Map,它是为在进程之间共享持久数据而设计的,但没有以线程安全的方式创建和删除文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26010179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档