Java Eclipse作业:如何手动调用isSchedulingRule的isConflicting()方法?
我有多个作业,我为它们设置了一个SchedulingRule,用于同时运行不超过2个作业 我在jobManager的done和running方法的侦听器中检查并控制runningJobNumber。然而,规则的isConflicting方法总是在JobManager的侦听器的done方法之前调用 因此,由于该状态,下一个作业正在等待下一次调用isConflicting,我想从JobListener的done方法手动调用isConflicting 以下是我的代码示例:Java Eclipse作业:如何手动调用isSchedulingRule的isConflicting()方法?,java,eclipse,eclipse-plugin,jobs,job-scheduling,Java,Eclipse,Eclipse Plugin,Jobs,Job Scheduling,我有多个作业,我为它们设置了一个SchedulingRule,用于同时运行不超过2个作业 我在jobManager的done和running方法的侦听器中检查并控制runningJobNumber。然而,规则的isConflicting方法总是在JobManager的侦听器的done方法之前调用 因此,由于该状态,下一个作业正在等待下一次调用isConflicting,我想从JobListener的done方法手动调用isConflicting 以下是我的代码示例: Job.getJobMana
Job.getJobManager().addJobChangeListener(new IJobChangeListener() {
@Override
public void sleeping(IJobChangeEvent event) {
}
@Override
public void scheduled(IJobChangeEvent event) {
}
@Override
public void running(IJobChangeEvent event) {
if (event.getJob() instanceof MyJob) {
numRunningJobs.incrementAndGet();
}
}
@Override
public void done(IJobChangeEvent event) {
if (event.getJob() instanceof MyJob) {
numRunningJobs.decrementAndGet();
System.out.println("done is called: " + System.currentTimeMillis());
}
}
@Override
public void awake(IJobChangeEvent event) {
}
@Override
public void aboutToRun(IJobChangeEvent event) {
}
});
public class MySchedulingRule implements ISchedulingRule {
public MySchedulingRule() {
}
@Override
public boolean contains(final ISchedulingRule rule) {
if (rule == this) {
return true;
}
return false;
}
@Override
public boolean isConflicting(final ISchedulingRule rule) {
if (rule == this) {
return true;
}
if (rule instanceof MySchedulingRule) {
System.out.println("isConflicting is called: " + System.currentTimeMillis());
boolean result = Activator.getDefault().getNumRunningJobs() >= 2;
System.out.println("Conflicted: " + result);
return result;
}
return false;
}
}
我认为您需要向我们展示一些代码来帮助我们理解这个问题。@greg-449添加了我的示例代码