运行 带有进度监视器的多个作业

Run multiple Jobs with progress monitor

我正尝试在我的 java 代码上 运行 多个作业。他们使用 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();

然后我以相同的方式 运行 以不同的 class 进行第二份工作。所以第二个工作只会等到第一个完成。有没有办法同时 运行 两个,或者强制第一个暂停以便第二个可以 运行?如果没有,有没有办法 运行 在线程而不是作业中显示进度监视器? 我尝试使 classes 运行nable 并将作业放入 运行 方法中,但结果相同。 谢谢

我不是 Java 方面的专家,但我很确定您可以使用 java 的 ExecutorService 同时执行 运行 个任务在 java.util.concurrent.ExecutorService

中找到

The java.util.concurrent.ExecutorService interface represents an asynchronous execution mechanism which is capable of executing tasks in the background. An ExecutorService is thus very similar to a thread pool.

我不会为你实现执行器,但你可以阅读 ExecutorService here

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

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

当然,如果一个 Job 正在做一些处理器密集型的事情,其他 Job 在 运行s 期间可能不会完成很多工作。