我正在使用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)你想中止。
我试过了一个似乎工作正常的解决方案(发布为答案) - 实际上,我认为这个主题已关闭。随意切入,否则,谢谢!