我有第三方Java庫提供資源。在Java中,如何在線程完成時關閉ThreadLocal資源
TheResource resource = TheResource.create()
一段時間後,當我與資源完成的,我應該關閉資源
resource.close()
據庫文件,我創建資源是一個ThreadLocal變量。這意味着資源是爲每個線程創建的,並且它堅持線程。我的問題是,關聯線程完成後是否可以自動調用close()
方法?我想我可以做到這一點,如果線程是我自己的自定義線程,因爲我可以參與線程的生命週期。但我的問題是關於系統提供的線程。
例如,在Android的SyncAdapter中爲您提供了一個線程。我不知道線程是如何完成的。我想知道在線程生命週期中是否存在某種「鉤子」機制,以便我可以關閉線程的ThreadLocal資源。
我不跟着你。你說圖書館創建了一個資源,但是圖書館的文檔說_you_必須提供一個'ThreadLocal'?也許如果你提供了一些代碼示例或文檔中的一些直接引用... –
我想明白你正在做什麼,但也是一個非常困難,如果不是不可能沒有一些奇怪的Java黑魔法。即使你能夠監聽線程來完成,你也必須在死的線程上下文中調用ThreadLocal.remove()。也許'Object.finalize()'是最接近你可以得到的,但它需要子類化該上下文線程。 – Whome