在开发快速mysql java应用程序时,如何在执行以下操作时以毫秒为单位指定超时:
从连接池获取连接
执行查询
我在mysql文档中找不到关于connector/j连接池的答案(1)。
我确实在tomcat的连接池中找到了maxwait连接池属性,它允许指定以毫秒为单位的超时作为池属性。如果getconnection操作花费的时间超过maxwait时间,则会引发超时异常。
对于我的第一个要求,使用tomcat连接池是唯一的选择吗?
关于指定查询超时的第二个要求,jdbc文档在statement对象上有setquerytimeout方法。但它采用以秒为单位的超时值(整数值)。如何满足以毫秒为单位指定超时的要求?
1条答案
按热度按时间qeeaahzv1#
如果您的库没有对超时的内置支持,则始终可以使用
ExecutorService
和一个Future
要模拟超时:这将使线程池中的线程继续运行(尝试完成
getConnection
或者查询),但您可以在设置的时间内对用户/呼叫者做出响应。