Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 Eclipse作业:如何手动调用isSchedulingRule的isConflicting()方法?_Java_Eclipse_Eclipse Plugin_Jobs_Job Scheduling - Fatal编程技术网

Java Eclipse作业:如何手动调用isSchedulingRule的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

我有多个作业,我为它们设置了一个SchedulingRule,用于同时运行不超过2个作业

我在jobManager的done和running方法的侦听器中检查并控制runningJobNumber。然而,规则的isConflicting方法总是在JobManager的侦听器的done方法之前调用

因此,由于该状态,下一个作业正在等待下一次调用isConflicting,我想从JobListener的done方法手动调用isConflicting

以下是我的代码示例:

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添加了我的示例代码