ObjectInputStream与ObjectOutputStream的顺序问题

对象通讯中主机与客户端的正确顺序
在使用ObjectInputStream与ObjectOutputStream进行对象通讯时,主机与客户端必须遵循正确的顺序来建立连接,否则可能导致死锁。创建ObjectInputStream前需要接收header数据,此过程会阻塞直至对应的ObjectOutputStream写入并刷新header。
在网络通讯中,主机与客户端若使用ObjectInputStream与ObjectOutputStream建立对象通讯,必须注重声明此两个对象的顺序。 
如: 
主机端先建立ObjectInputStream后建立ObjectOutputStream,则对应地客户端要先建立ObjectOutputStream后建立ObjectInputStream,否则会造成两方互相等待数据而导致死锁。 
原因是建立ObjectInputStream对象是需要先接收一定的header数据,接收到这些数据之前会处于阻塞状态。以下为java API文档的说明 
Creates an ObjectInputStream that reads from the specified InputStream. 
A serialization stream header is read from the stream and verified. 
This constrUCtor will block until the corresponding ObjectOutputStream 
has written and flushed the header.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值