我是 web 开发的新手 我正在使用 java servlets 制作一些 web 服务,但我遇到了很多问题怎么办?东西:(
我正在开发一个应用程序,我需要在某个时间将 mysql 表列值重置为默认值假设我们需要在每周日晚上 10:00 重置计数器。
有没有Java或者mysql中的alarm manager之类的东西可以一直在后台运行并在特定时间触发。
谢谢,
最佳答案
Java有一个很好的接口(interface)ScheduledExecutorService。 你可以试试这段代码
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
//every day to execute
long everyDayDelay = 24*60*60*1000;
//first time to execute, it can be your special date
//for example 5 seconds after launch
long timeToExecute = System.currentTimeMillis()+5*1000;
service.scheduleWithFixedDelay(new Task(), getTimeToLaunch(timeToExecute), everyDayDelay, TimeUnit.MILLISECONDS);
在哪里
//return difference between now and timeToExecute
public static long getTimeToLaunch(long timeToExecute){
long current = System.currentTimeMillis();
return timeToExecute - current;
}
class Task implements Runnable{
@Override
public void run() {
System.out.println("Run task!");
}
}
更新:执行 sql 任务的类
public class SqlExecutionService1 {
public static final long everyDayDelay = 24*60*60*1000;
public SqlExecutionService1(){
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
//every day to execute
//first time to execute
//for example 5 seconds after launch
long timeToExecute = System.currentTimeMillis()+5*1000;
service.scheduleWithFixedDelay(new SqlTask1(), getTimeToLaunch(timeToExecute), everyDayDelay, TimeUnit.MILLISECONDS);
}
private long getTimeToLaunch(long timeToExecute){
long current = System.currentTimeMillis();
return timeToExecute - current;
}
}
class SqlTask1 implements Runnable{
@Override
public void run() {
//your sql tasks
}
}
要创建此类,当您的应用程序服务器启动时 - 在您的一个主要 servlet 中使用方法 init()。 示例 -
public class MainInitServlet extends HttpServlet {
public void init() {
new SqlExecutionService1();
}
}
关于java - 特定使用 Servlet 后将 mysql 列值重置为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14213003/