我正在尝试在我的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方法中,但结果相同。 感谢。
答案 0 :(得分:0)
我不是Java专家,但我很确定你可以使用java.util.concurrent.ExecutorService
java.util.concurrent.ExecutorService
接口表示一种能够在后台执行任务的异步执行机制。因此,ExecutorService非常类似于线程池。
我不打算为您实现执行程序,但您可以阅读 ExecutorService here
答案 1 :(得分:0)
默认情况下,使用Eclipse作业管理器处理的线程池,多个作业同时运行。
您实际上必须使用作业调度规则来防止同时运行不同的作业。
当然,如果一个Job正在做一些非常耗费处理器的事情,那么其他工作在运行时可能无法完成。