0

我正在尝试在我的 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();

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

4

2 回答 2

0

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

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

我不会为您实现执行程序,但您可以在此处阅读ExecutorService

于 2016-06-09T20:57:39.757 回答
0

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

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

当然,如果一个 Job 正在做一些处理器密集型的事情,那么其他 Job 在它运行时可能不会做太多事情。

于 2016-06-10T07:13:24.127 回答