Java 如何正确阻止Eclipse作业
我正在使用org.eclipse.core.runtime.jobs.JOB执行后台任务,该任务还从UI控件收集数据 我想阻止,直到作业完成。作业的触发器是某个ui按钮事件Java 如何正确阻止Eclipse作业,java,jobs,job-scheduling,Java,Jobs,Job Scheduling,我正在使用org.eclipse.core.runtime.jobs.JOB执行后台任务,该任务还从UI控件收集数据 我想阻止,直到作业完成。作业的触发器是某个ui按钮事件 Job job = new Job("Job") { protected IStatus run(IProgressMonitor arg0)
Job job = new Job("Job") {
protected IStatus run(IProgressMonitor arg0) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
System.out.println(i);
}
}
});
return Status.OK_STATUS;
}
};
job.schedule();
job.join(); //<-- Doesn't block!!!
if (job.getResult().isOK())
System.out.println("success"); //<-- Result is ok!!
else
System.out.println("failed");
您的作业将打开第二个线程,该线程被异步调用,这就是为什么方法名为asyncExec,因此您的作业将立即返回。是的。。。愚蠢的我。。。它应该是没有a的syncExec…但是syncExec块gui…为什么还要使用[a]syncExec?您没有从GUI访问任何东西,因此不需要它。我正在访问,正如post任务中所述,该任务还从UI控件收集数据。。我刚刚从帖子中删除了它,并用thread.sleep替换了它