运行 带有进度监视器的多个作业
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 期间可能不会完成很多工作。
我正尝试在我的 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 期间可能不会完成很多工作。