→ awert:雖然不同,不過可考慮用 guava i/o supplier的方式 06/12 00:55
看了官網的lease,他是用個bool去判斷是不是在使用中。
然後記錄領取時間,超時的話就自己收回去
public synchronized boolean lease() {
if(inuse) {
return false;
} else {
inuse=true;
timestamp=System.currentTimeMillis();
return true;
}
}
不是很想這樣用
因為假設我打算長時間使用資料庫連線的話
可能用到一半就被收回去了。
※ 編輯: LaPass 來自: 125.233.153.51 (06/12 01:31)
→ awert:有什麼特別需求要一直開著連線嘛? 06/12 01:35
推 lausai:不怕麻煩的話..寫一個conn wapper? 06/12 01:59
推 qrtt1:為什麼不直接用 connection pool library 06/12 07:21
→ qrtt1:自己實作除了興趣,其實很難保證考慮到各種情況。 06/12 07:21
→ LaPass:應該說是.... 針對自己的習慣下去寫吧 06/12 08:11
→ qrtt1:什麼樣的習慣? 06/12 09:35
→ LaPass:一些自己的介面以及一些狀況的處理原則之類的 06/12 11:58
→ qrtt1:那到底是什麼!? 06/12 12:52
→ aleelyle:他是從c++跳過來的吧 這是c++常用的 RAII 06/12 13:34
推 Chikei:finalize或PhantomReference+ReferenceQueue 06/12 17:18
→ Chikei:不過都不保證執行時間點 06/12 17:19
推 LPH66:以他的狀況來看用 finalize 應該就行了 06/12 17:53
→ LaPass:如果仍然連線中,finalize就不會被執行到,試過了 06/12 18:59
→ bitlife:不應該在finalize中才去釋放自OS/其它AP 取得應還的資源 06/12 19:01
→ LaPass:PhantomReference跟ReferenceQueue我再去研究看看這是什麼 06/12 19:02
推 Chikei:掛個proxy class然後在proxy object跑finalize,這樣也會因 06/13 01:28
→ Chikei:為後端conn obj還在連線而不會被回收? 06/13 01:29
→ Chikei:anyway, it's nondeterministic safeguard approach 06/13 02:20
→ Chikei:對JVM來說"物件沒有參照了"這件事的時間點是非確定性的 06/13 02:22
推 aceldama:java 7有 try with resource 可以用嗎? 06/16 12:30