具体情况是这样,我在自己的云服务器部署了一个javaweb项目,该项目主要功能就是对数据库的数据进行展示,但是每次刚发布后都能正常运行,而到了第二天再去访问这个项目就连接不上数据库了,查了资料才知道原来mysql的连接会默认在8小时无操作后被销毁,查解决办法,网上很多帖子都说吧那个默认销毁时长改为一年就行了,但这种方法肯定是会影响服务器运行速度的,对此我自己是通过开辟一个线程解决的,如果这个解决方法会有什么隐患也希望路过的大佬可以指点一下。
具体做法:
在工具类和数据库创建连接后,开辟一个新线程,每隔一段时间访问一下数据库但又不进行其他操作,总而言之就是是使得对数据库的无操作时间不超过8小时,代码如下:
final long timeInterval = 1000*60*4;//设置执行周期为4小时 Runnable runnable = new Runnable() { public void run() { while (true) { Statement statement; try { statement = conn.createStatement(); //conn为数据库连接 //要执行的SQL语句 String sql = "select * from info limit 1"; statement.executeQuery(sql); } catch (SQLException e1) { e1.printStackTrace(); } try { Thread.sleep(timeInterval); } catch (InterruptedException e) { e.printStackTrace(); } } } }; Thread thread = new Thread(runnable); thread.start();