Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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作业_Java_Jobs_Job Scheduling - Fatal编程技术网

Java 如何正确阻止Eclipse作业

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)

我正在使用org.eclipse.core.runtime.jobs.JOB执行后台任务,该任务还从UI控件收集数据

我想阻止,直到作业完成。作业的触发器是某个ui按钮事件

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替换了它