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