使用进度监视器运行多个作业

时间:2016-06-09 20:29:34

标签: java multithreading eclipse-rcp jobs progressmonitor

我正在尝试在我的java代码上运行多个Jobs。他们使用IProgressMonitor更新进度条。

Job job = new Job("My first job") {
    @Override
    protected IStatus run(IProgressMonitor monitor) {
        monitor.beginTask("start task", 100);
        //long running Hibernate save operation
        monitor.done();
        return Status.OK_STATUS;
        }
    };
job.setUser(false);
job.schedule();

然后我以同样的方式继续在另一个班级中运行第二个Job。所以第二个工作将等到第一个工作完成。有没有办法同时运行两个,或强制第一个暂停,以便第二个可以运行?如果没有,有没有办法在线程而不是作业中运行进度监视器? 我尝试使我的类可运行并将作业放在run方法中,但结果相同。 感谢。

2 个答案:

答案 0 :(得分:0)

我不是Java专家,但我很确定你可以使用java.util.concurrent.ExecutorService

中的java的 ExecutorService 同时运行任务
  

java.util.concurrent.ExecutorService接口表示一种能够在后台执行任务的异步执行机制。因此,ExecutorService非常类似于线程池。

我不打算为您实现执行程序,但您可以阅读 ExecutorService here

答案 1 :(得分:0)

默认情况下,使用Eclipse作业管理器处理的线程池,多个作业同时运行。

您实际上必须使用作业调度规则来防止同时运行不同的作业。

当然,如果一个Job正在做一些非常耗费处理器的事情,那么其他工作在运行时可能无法完成。