简体   繁体   English

当方法开始和结束时停止时启动固定的延迟调度

[英]Start a fixed delayed schedular when a method start and stop when finishes

I have a Spring Boot web application. 我有一个Spring Boot Web应用程序。

I want to start a fixedDelayed scheduled job when a method starts. 我想在方法启动时启动fixedDelayed预定作业。 And stop scheduled job when someMethod method finished. someMethod方法完成后停止预定作业。 I read the documentation but I couldn't understand how. 我阅读了文档,但我无法理解。 I want to wirte someting to db every 30 second while someMethod is still working. 我想在30秒内对某些数据库进行分析,而someMethod仍在工作。

Here is the pseudo code. 这是伪代码。 Anyone has an idea? 有人有想法吗?

public void someMethod() {

    //Start scheduledLogger() to work every 30 seconds

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

    //Stop scheduledLogger() job
}

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

You can do something like this: 你可以这样做:

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());
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM