我正在寫一個REST客戶端,它有一個具有固定到期時間的訪問令牌。使用finalize方法作爲Timer的替代方法?
如何確保在過期時間之前請求新令牌?我看到兩個選項:
- Timer
- 一些有心計與finalize方法可能使用ref package
1)需要我創造條件,在一個給定的時間和要求運行一個新的線程一個新的令牌。這對我來說似乎很浪費。
2)會利用反正會運行的GC線程,所以我不需要創建一個新的線程。當finalize
運行時,只檢查令牌是否即將過期,如果是,則請求新的令牌,如果沒有使該對象再次可用,直到下一個GC週期運行。
評論或其他想法?
'GC線程將反正運行'。這可能並非總是如此。 GC只有在需要運行時才由JVM運行。如果您的應用程序有足夠的可用內存,GC可能根本不會被觸發。所以,我建議不要依賴這種方法。 – anacron
每當我有兩個選擇,另一個是「一些詭計」,我總是爲此付出代價。使代碼更有趣⸮ – Kayaman
這就是[⸮](https://en.wikipedia.org/wiki/Irony_punctuation)的原因:) – Kayaman