Java ObjectInputStream与ObjectOutputStream阻塞(block)问题

来源:互联网 发布:小学生学编程视频教程 编辑:程序博客网 时间:2024/03/29 20:59

在网络通讯中,主机与客户端若使用ObjectInputStream与ObjectOutputStream建立对象通讯时,有时会发生线程阻塞问题。

这是因为当从InputStream创建一个ObjectInputStream时,需要从流中读入并验证一个Header,这时如果对方的ObjectOutputStream没有写入一个Header,ObjectInputStream的构造函数便会阻塞(block)。

解决这个问题的方法是调整ObjectInputStream与ObjectOutputStream的声明顺序

比如:主机端先建立ObjectInputStream后建立ObjectOutputStream,则对应地客户端要先建立ObjectOutputStream后建立ObjectInputStream