gpt4 book ai didi

java - 如何控制应用程序中同线程的干扰?

转载 作者:行者123 更新时间:2023-12-01 12:25:38 25 4
gpt4 key购买 nike

嗨 friend , 我面临着当前发展的一个关键问题。实际上我正在使用 Quartz 库来安排这个应用程序中的任务。我已经确定了调用特定方法的特定时间。但有时,如果方法花费的执行时间比已经固定的时间多,那么该方法将被再次调用,因此我的所有处理都会重复执行。我尝试过同步关键字,但它不起作用。

我正在使用代码安排我的任务 -

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.JobBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
import static org.quartz.TriggerBuilder.*;


public class BrainScheluder {
public BrainScheluder()
{
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// Start scheduler here
scheduler.start();

// define the job and tie it to our BrainJob class
JobDetail job = newJob(BrainJob.class)
.withIdentity("job1", "group1")
.build();

// Trigger the job to run now, and then repeat every 60 seconds
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(30)
.repeatForever())
.build();

// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);

// End scheduler here
//scheduler.shutdown();

} catch (SchedulerException se) {
se.printStackTrace();
}
}
}

我正在使用代码执行我的工作 -

import java.util.LinkedHashMap;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.my.Vi;


public class BrainJob implements Job {
Vi v = null;
public BrainJob() {
v= new Vi();
}

public synchronized void execute(JobExecutionContext context)
throws JobExecutionException
{

v.myWork();
}
}

Vi 类的 myWork 方法用于处理一些数据,当数据量较大时,会重复调用该函数。当数据不是很大时,这个函数就会被很好地调用。

所以

我们可以根据我们的处理时间要求来控制myWork()方法的调用吗?我的意思是我们可以同步 myWork() 方法吗?在这里。

请帮助我。谢谢

最佳答案

如果我很理解你,你可以在 myWork() 启动时在某个地方设置一个标志( session ,或某种上下文,数据库,这取决于你正在使用的其他东西),然后在每次执行之前检查该标志的状态。如果该方法尚未完成其工作,请不要再次启动它。一旦完成,重置标志,当下一个预定时间到来时,它将正常执行。

关于java - 如何控制应用程序中同线程的干扰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com