使用ObjectInputStream和ObjectOutputStream注意问题
1、對象序列化,類實現(xiàn)Serializable接口
不需要序列化的屬性,使用transient聲明
2、使用套接字流在主機之間傳遞對象注意問題:
學習自:Socket同時使用ObjectInputStream和ObjectOutputStream傳輸序列化對象時的順序
ObjectInputStream與ObjectOutputStream的順序問題
在網(wǎng)絡通訊中,主機與客戶端若使用ObjectInputStream與ObjectOutputStream建立對象通訊,必須注重聲明此兩個對象的順序。
如:
主機端先建立ObjectInputStream后建立ObjectOutputStream,則對應地客戶端要先建立ObjectOutputStream后建立ObjectInputStream,否則會造成兩方互相等待數(shù)據(jù)而導致死鎖。
原因是建立ObjectInputStream對象是需要先接收一定的header數(shù)據(jù),接收到這些數(shù)據(jù)之前會處于阻塞狀態(tài)。
public ObjectInputStream(InputStream in) throws IOException的官方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.?
在創(chuàng)建ObjectInputStream對象時會檢查ObjectOutputStream所傳過來了頭信息,如果沒有信息將一直會阻塞
轉(zhuǎn)載于:https://www.cnblogs.com/huwtylv/p/4392463.html
總結(jié)
以上是生活随笔為你收集整理的使用ObjectInputStream和ObjectOutputStream注意问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全方面了解和学习PHP框架
- 下一篇: Maven系列二setting.xml