在网络通讯中,主机与客户端若使用ObjectInputStream与ObjectOutputStream建立对象通讯时,有时会发生线程阻塞问题。
这是因为当从InputStream创建一个ObjectInputStream时,需要从流中读入并验证一个Header,这时如果对方的ObjectOutputStream没有写入一个Header,ObjectInputStream的构造函数便会阻塞(block)。
解决这个问题的方法是调整ObjectInputStream与ObjectOutputStream的声明顺序
比如:主机端先建立ObjectInputStream后建立ObjectOutputStream,则对应地客户端要先建立ObjectOutputStream后建立ObjectInputStream