中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Closeable和AutoCloseable有哪些區別

發布時間:2021-06-16 14:16:27 來源:億速云 閱讀:202 作者:小新 欄目:編程語言

這篇文章主要介紹了Closeable和AutoCloseable有哪些區別,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

導讀:我們知道,在java中jvm虛擬機會自動去調用gc(垃圾回收器)去回收堆中沒有被引用的對象,至于什么時候回收,是不確定的,同時有些是用到其他資源,jvm也不會進行回收,類似Io流中的FileInputStream使用到了硬盤資源,垃圾回收器是不會去回收的,因此,必須手動關閉掉。我們進行手動的編寫close()方法進行關閉,然而,每次這些寫會造成代碼冗余不優雅,JDK中對于釋放資源有Closeable和AutoCloseable可以使用,以下為詳解。、

Closeable

Closeable源碼

Closeable和AutoCloseable有哪些區別

使用close需要注意

在java.io.包下 InputStream,outputStream, Reader, Writer 等基類都實現了Closeable接口,因為每次的IO操作結束之后都要去釋放資源。

  • 如果在調用此方法之前 stream已經關閉 ,則方法失效;

  • 建議先關閉內部的資源,并標記為已關閉;

  • 優先拋出IO異常;

AutoCloseable

AutoCloseable接口位于java.lang包下,從JDK1.7開始引入。

由于位于java.lang包下,可以針對于所有實現該接口的流,而closable本身也實現了該接口,java的io流間接性的可以自動關閉接口,也就是說從jdk1.7開始,不需要手動去關流。

AutoCloseable源碼

Closeable和AutoCloseable有哪些區別

{try}-with-resources的使用注意

在1.7之前,我們通過try{} finally{} 在finally中釋放資源。

  • 在finally中關閉資源存在以下問題:

  • 自己要手動寫代碼做關閉的邏輯;

  • 有時候還會忘記關閉一些資源;

  • 關閉代碼的邏輯比較冗長,不應該是正常的業務邏輯需要關注的;

Closeable和AutoCloseable有哪些區別

很顯然是很繁瑣的。jdk1.7之后采用{try}-with-resources的解釋

將可能拋出異常的代碼塊放入到try塊中,在try結束的時候,會自動將這些資源關閉(調用close方法)。

{try}-with-resources關鍵點

帶資源的try語句的3個關鍵點:

  • 由帶資源的try語句管理的資源必須是實現了AutoCloseable接口的類的對象。

  • 在try代碼中聲明的資源被隱式聲明為final。

  • 通過使用分號分隔每個聲明可以管理多個資源。

Closeable和AutoCloseable有哪些區別

這樣看起來是不是簡單,舒服很多

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Closeable和AutoCloseable有哪些區別”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jdk
AI

花莲市| 宕昌县| 股票| 崇左市| 工布江达县| 邵阳市| 咸宁市| 宣武区| 班戈县| 驻马店市| 张家川| 青田县| 临猗县| 惠水县| 卓资县| 沅陵县| 万山特区| 滦南县| 惠来县| 宣威市| 沿河| 丰镇市| 马边| 甘泉县| 乌鲁木齐县| 上高县| 周宁县| 邯郸县| 嵩明县| 大田县| 吕梁市| 哈密市| 叙永县| 新昌县| 高雄县| 安吉县| 民丰县| 榆树市| 黔江区| 顺义区| 林甸县|