我正在使用c3p0来处理多线程环境下的数据库连接池。这个问题可能涉及到其他连接池库,但这就是我所拥有的。
最近,我需要在这些线程上直接或间接地使用c3p0实现interruption handling,并注意到如果在
显然,这是由于
很好。问题是如何正确处理这个问题 - 无论是情况a)在您的线程终止之前要继续事务,还是b)想要中止事务。
我已经尝试了一种看起来运行良好的解决方案(发布为答案) - 实际上,我认为这个主题已经关闭。否则,请随意参与讨论,谢谢!
最近,我需要在这些线程上直接或间接地使用c3p0实现interruption handling,并注意到如果在
c3p0Datasource.getConnection()
试图从池中获取Connection
时立即调用interrupt()
,它会抛出一个InterruptedException
。显然,这是由于
wait()
引起的。at java.lang.Object.wait(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1414)
很好。问题是如何正确处理这个问题 - 无论是情况a)在您的线程终止之前要继续事务,还是b)想要中止事务。
我已经尝试了一种看起来运行良好的解决方案(发布为答案) - 实际上,我认为这个主题已经关闭。否则,请随意参与讨论,谢谢!