我有一个应用程序,它将与
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秒,但是当线程完成时将其更改为立即返回并不太难.
原文地址:https://www.jb51.cc/java/128505.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。