Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何运行多个java运行时作业并等待它们全部完成?_Java_Multithreading_Loops_Jobs - Fatal编程技术网

如何运行多个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

我有以下代码来运行带有java进度条的作业:

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