java - 特定使用 Servlet 后将 mysql 列值重置为默认值

标签 java mysql servlets

我是 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/

相关文章:

php - MySQL PDO : Using bound placeholder within a regular expression

javascript - servlet 清除本地存储

Java servlet 试图输出一个 xlsx 文件,但不断获取八位字节流

Java Calendar 返回月份名称所有格

java - 事件未显示在 Android 设备日历上

mysql - 使用 SQL 和 JOIN 统计投票(这可能吗?)

java - 使用 Tomcat 服务器的 Java 中的 Servlet

java - Android Studio/IntelliJ IDEA 中的包管理

java - Libgdx - Actor 的位置不正确

php - 从 FTP 获取文件名列表