如何强制超时为DriverManager.getConnection()方法调用?
发布时间:2020-05-25 00:13:56 所属栏目:Java 来源:互联网
导读:我有一个应用程序,它将与 MySQL建立数据库连接并执行查询.有时,DriverManager.getConnection()方法调用需要2秒,有时需要30秒.有没有办法控制此方法2秒后超时? DriverManager.setLoginTimeout()似乎不起作用. 实际上,我可以通过将线程休眠为超时值并在唤醒后
|
我有一个应用程序,它将与 MySQL建立数据库连接并执行查询.有时,DriverManager.getConnection()方法调用需要2秒,有时需要30秒.有没有办法控制此方法2秒后超时? DriverManager.setLoginTimeout()似乎不起作用. 实际上,我可以通过将线程休眠为超时值并在唤醒后关闭连接来为statement.executeQuery()设置超时.但它的连接建立部分我无法真正设置超时. 非常感谢任何帮助. 解决方法如果没有其他选项,您可以始终只在一个单独的线程中执行调用,如果它在2秒内没有完成,您将中止/忽略该线程.编辑 public class Dummy extends Thread {
private volatile Connection conn = null;
@Override
public void run() {
try {
this.conn = DriverManager.getConnection("foobar") ;
} catch (SQLException e) {
e.printStackTrace();
}
}
static public Connection getConnection() {
Dummy d = new Dummy() ;
d.start() ;
try {
Thread.sleep(2000) ;
} catch (InterruptedException e) {}
return d.conn ;
}
}
然后,您可以在代码中的其他位置调用静态Dummy.getConnection()方法.一个缺点是这种方法总是花费2秒,但是当线程完成时将其更改为立即返回并不太难. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- java – 我们将Servlet放在Tomcat的目录结构中?
- java – 如何终止Matcher.find(),当它运行太长时
- java – JMS主题与队列 – 意图
- 使用 Spring Boot 实现 WebSocket实时通信
- java – 是否可以为Jetty的servlet映射使用正则表
- 如何逐步使用Java中的Log4j配置jboss 6.x中的日志
- java – org.codehaus.jackson.JsonParseExcepti
- Java用 Rhino/Nashorn 代替第三方 JSON 转换库
- 以YH取钱为例模拟Java多线程同步问题完整代码
- 为什么Java 8 CompletableFuture thenCompose会根
热点阅读
