gpt4 book ai didi

java - 如何设置 Eclipse 作业执行的顺序?

转载 作者:行者123 更新时间:2023-11-30 09:41:06 25 4
gpt4 key购买 nike

例如,我有 2 个方法包含 self 作业

protected void method1(){
String name=getName();//return name based on combobox selection
Job job= new Job("first job"){
@Override
protected IStatus run(IProgressMonitor monitor) {
someActions();
}
}
}

protected void method2(){
String name=getName();//return name based on combobox selection
Job job= new Job("second job"){
@Override
protected IStatus run(IProgressMonitor monitor) {
someActions();
}
}
}

方法1和方法2可以分开调用,有自己的进度条

我还有一些按钮可以调用这两种方法

 btnUpdate.addListener(SWT.MouseUp, new Listener() {

@Override
public void handleEvent(Event event) {
method1();
method2();
}
}

但是这个构造不正确,因为 method2() 的作业开始执行得早,然后 method1() 的作业完成。此外,如果我将 method1() 中的作业标记为连接,则 method2() 将不会启动,直到 method1() 执行,但不会显示进度条

如何让它正常工作?)

最佳答案

通过设置作业规则防止 2 个作业同时运行:

public class Mutex implements ISchedulingRule {

public boolean contains(ISchedulingRule rule) {
return (rule == this);
}

public boolean isConflicting(ISchedulingRule rule) {
return (rule == this);
}

}// Mutex

public static final ISchedulingRule mutex = new Mutex();

对于你的两个工作:

job.setRule(<your mutex instance>);

确保两个作业使用相同的互斥实例!

这应该:

  1. 防止 2 个作业同时运行(如果它们都使用相同的规则)
  2. 按照您安排的顺序执行它们

顺便说一句:您没有使用 job.schedule() 安排您的作业,所以实际上它们甚至不应该使用您发布的代码来执行...

关于java - 如何设置 Eclipse 作业执行的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110041/

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