如何运行多个java运行时作业并等待所有这些作业完成?

时间:2012-10-22 12:45:05

标签: 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("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();



}

问题是我想多次调用此函数,但只有第一个作业运行而其他几乎同时启动但我从未看到他们的结果......虽然显示了他们的进度监视器。我如何等待所有人以某种方式完成或问题是其他什么?

1 个答案:

答案 0 :(得分:-1)

首先,您必须创建自己的Class,它是Callable的子类。

在这个类中,你重写了call方法并执行你在createNewJobRun中所做的事情。

现在你必须创建一个FutureTask(在Thread中执行以创建你的Job并得到一个结果)。

示例:请查看此链接(标题为FutureTask <V>

HERE