如何运行多个java运行时作业并等待它们全部完成?
我有以下代码来运行带有java进度条的作业:如何运行多个java运行时作业并等待它们全部完成?,java,multithreading,loops,jobs,Java,Multithreading,Loops,Jobs,我有以下代码来运行带有java进度条的作业: private void createNewJobRun(final int i) { Job job = new Job("Experiment " //$NON-NLS-1$ + getName()) { @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask
private void createNewJobRun(final int i) {
Job job = new Job("Experiment " //$NON-NLS-1$
+ getName()) {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Experiment is running ...", 100); //$NON-NLS-1$
//call here my own functions that to the actual work
monitor.done();
return Status.OK_STATUS;
}
};
job.schedule();
}
问题是我想多次调用此函数,但只有第一个作业运行,其他作业几乎同时启动,但我从未看到它们的结果…尽管显示了它们的进度监视器。我如何等待它们以某种方式全部完成,或者问题是其他的?首先,您必须创建自己的类,它是来自Callable的子类 在这个类中,您重写call方法并执行在createNewJobRun中执行的操作 现在,您必须创建一个FutureTask(在线程中执行以生成作业并获得结果) 示例:查看此链接(标题为FutureTask
)
您是使用线程还是按顺序启动它们?此方法在如下循环中调用:for(int i…)creteNewJobRun(i),无需任何额外线程。
作业本身是否在内部使用线程,还是提交到类似线程池的东西?您可以显示Job
类吗?Job类不是我写的:org.eclipse.core.runtime.jobs.Job