Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在方法启动时启动固定的延迟调度程序,并在完成时停止_Java_Spring_Spring Boot_Quartz Scheduler_Spring Scheduled - Fatal编程技术网

Java 在方法启动时启动固定的延迟调度程序,并在完成时停止

Java 在方法启动时启动固定的延迟调度程序,并在完成时停止,java,spring,spring-boot,quartz-scheduler,spring-scheduled,Java,Spring,Spring Boot,Quartz Scheduler,Spring Scheduled,我有一个SpringBootWeb应用程序 我想在方法启动时启动fixedDelayed计划作业。并在someMethod方法完成时停止计划作业。我读了文档,但不明白怎么读。我想在somethod仍在工作的情况下,每隔30秒向db发送一次数据 这是伪代码。有人有主意吗 public void someMethod() { //Start scheduledLogger() to work every 30 seconds //... //Do something ta

我有一个SpringBootWeb应用程序

我想在方法启动时启动fixedDelayed计划作业。并在
someMethod
方法完成时停止计划作业。我读了文档,但不明白怎么读。我想在
somethod
仍在工作的情况下,每隔30秒向db发送一次数据

这是伪代码。有人有主意吗

public void someMethod() {

    //Start scheduledLogger() to work every 30 seconds

    //...
    //Do something taking long time

    //Stop scheduledLogger() job
}

private void scheduledLogger() {
    //Log to database
}

您可以这样做:

public void someMethod() 
   {
       //Start scheduledLogger() to work every 30 seconds
       TimerTask tasknew = new TimerTask(){
            @Override
            public void run()
            {
                scheduledLogger();

            }
        };
       Timer timer = new Timer();

       // scheduling the task
       timer.scheduleAtFixedRate(tasknew, new Date(), 3000);      

        //Do something taking long time
        try
        {
            Thread.sleep(20000);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        //Stop scheduledLogger() job
        // terminating the timer
        timer.cancel();
    }

    private void scheduledLogger() {
        //Log to database
        System.out.println("Log to database at "+new Date());
    }
这可能对你有帮助