try-with-resources引起的Socket关闭,产生java.net.SocketException: Socket is closed?
生活随笔
收集整理的這篇文章主要介紹了
try-with-resources引起的Socket关闭,产生java.net.SocketException: Socket is closed?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、try-with-resources是什么?
它是jdk1.7之后出現(xiàn)的一直新的try-catch異常捕獲操作,目的就是簡化操作,實現(xiàn)資源的自動關(guān)流。
示例代碼
所以用它的時候要注意了,如果我們的資源還要繼續(xù)使用,就不能用它來捕獲異常。例如在編寫客戶端-服務(wù)器程序時,用于交互的Socket在交互完之前是不應(yīng)該被釋放的,否則就會出現(xiàn)java.net.SocketException: Socket is closed異常。
例子:
這是一個將服務(wù)器發(fā)送過來的裝著集合對象的對象流反序列化為集合對象的方法。方法中把從Socket獲得的InputStream包裝在了ObjectInputStream對象流中,而ObjectInputStream對象使用了try-with-resources捕獲,try中語句結(jié)束之后會自動關(guān)閉對象流,從而Socket被關(guān)閉。
- 如果Scoket有相關(guān)聯(lián)的通道,則生成的OutputStream 的所有操作也會關(guān)聯(lián)該通道。
- 關(guān)閉生成的OutputStream也將關(guān)閉相關(guān)的Socket。(InputStream同樣的道理)
文章轉(zhuǎn)自
總結(jié)
以上是生活随笔為你收集整理的try-with-resources引起的Socket关闭,产生java.net.SocketException: Socket is closed?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020巨量引擎用户旅游全周期行为动机调
- 下一篇: 在线教育用户增长闭环白皮书