Java踩坑笔记:ObjectIOStream与IOStream的各种装饰器(先挖个坑,以后再来详细填)

Java的序列化和ObjectStream真是一个大坑。。

 

先不说多线程环境下的问题,在单线程里,一个Socket只能保持一个ObjectOutputStream,原因好像是在于ObjectOutputStream有锁机制或是阻塞之类的东西,否则会导致接受方出现”StreamCorruptedException : invalid type code AC“,同理ObjectInputStream也只能保持一个,否则接收方会出现header错误的相关异常。

 

据说原因是ObjectOutputStream在构造的时候即new一个出来的时候,就会给输出流的开头添加几个用于表示序列化对象开头的字节,多次的new而不close就会导致流里面有多个表示开头的地方,接收方就会报错。

 

顿时感觉Java IO真是一块大头,可能会比Net和Thread两座大山更大,等以后有缘分看完API的源码,我就回来再填吧(flag

posted @ 2017-07-16 17:24  Max_Li  阅读(338)  评论(0编辑  收藏  举报