[英]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.