我需要调用一个mysql连接,并在每20小时后对存在的连接进行一次虚拟查询,以便连接不会被关闭。这里我需要一个函数调用(这个函数实现一个连接和一个虚拟查询),它独立地运行在后端。请建议在后台运行的定时器函数,并在每20小时后调用一次函数..
答案 0 :(得分:4)
不是你问题的答案,而是一个有用的提示:
不要使用虚拟查询每20小时触发一次以保持mysql连接保持活动状态。最好使用 连接池 技术。我建议你使用c3p0
。
如需更多帮助,请参阅此讨论:Connection pooling options with JDBC: DBCP vs C3P0
答案 1 :(得分:1)
你的意思是这样的:
http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/Timer.html
int delay = 1000 * 60 * 60 * 20; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
}
};
new Timer(delay, taskPerformer).start();
您还可以使用操作系统调度程序(如Linux上的“cron”或Windows上的Task Mgr)。
答案 2 :(得分:1)
看看Quartz。这是一个企业工作调度员。
使用quatz的优点是:
缺点是
答案 3 :(得分:1)
java.util.Timer可以在预定义的时间段安排事件(例如paulsm4提到的计时器,但不需要涉及SWING / AWT)。