簡體   English   中英

關閉資源的最佳實踐是什么?

[英]What's best practice to close resoures?

我有一個Java類,該類分配了必須關閉的資源。 我真的不知道如何執行此操作,我當前的方法是實現接口AutoCloseable ,希望調用方有時調用close()並添加一個boolean close() ,該boolean在每個方法的開頭都進行檢查,如果為true ,則該方法拋出IllegalStateException

調用者必須調用close()和我必須在每個方法的開始處都檢查是否關閉都不好,是否有一些最佳實踐來避免這種情況?

在您的情況下,使您的類實現接口AutoCloseable是一個好方法,因為它允許在try-with-resource語句中使用它。

如果出於某種原因您想限制對象實例沒有正確關閉以避免泄漏的風險,則可以覆蓋finalize方法,如下所示:

@Override
protected void finalize() throws Throwable {
    try {
        this.close();
    } finally {
        super.finalize();
    }
}

警告1:必須非常謹慎地實現finalize方法,因為它會減慢GC的工作,因此您需要確保代碼能夠快速執行。

警告2:不必調用finalize方法,因此不要依賴它來為您close對象,它只能幫助降低風險,對象的用戶仍然有責任正確close它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM