我正在使用c3p0來處理多線程環境中的數據庫連接池。這個問題可能涉及其他池庫,但這是我的。連接池和Thread.interrupt()
最近,我需要實現的直接或間接使用C3P0這樣的線程interrupt離子處理,並已經注意到,如果interrupt()
被稱爲權當c3p0Datasource.getConnection()
試圖一Connection
從池中取出了我,它拋出一個InterruptedException
。
顯然,出現這種情況的,因爲wait()
at java.lang.Object.wait(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1414)
酷。問題是你如何正確處理這個問題 - 兩種情況都是這樣的:a)你想在線程終止前繼續處理事務,並且b)你想中止。
我試過了一個似乎工作正常的解決方案(發佈爲答案) - 實際上,我認爲這個主題已關閉。隨意切入,否則,謝謝!