Java执行程序不按顺序执行

时间:2015-03-27 23:10:55

标签: java multithreading executorservice executor

如果这是一个基本问题我提前道歉,但我是新材料。我有一个软件是由用户通过网站提交工作开始的。因为软件本身就是为了利用并行处理而设计的,所以我想要做的就是排队这些工作,这样他们就可以一个接一个地开始工作。为此,我试图利用Java内置的Executor框架。我开发的代码是:

public JobManager()
{
    mcpExecutor = Executors.newSingleThreadExecutor();
}

public Future<MatlabProcessResults> startProcess(inputs)
{
    MyProcess myProcess = new MyProcess(inputs);
    Future<MyProcessResults> future = mcpExecutor.submit(myProcess);

    Long newKey = System.currentTimeMillis();
    futures.putIfAbsent(newKey, future);
}

每次按下“提交”按钮时,都会运行startProcess。现在,newSingleThreadExecutor的描述为:

  

创建一个Executor,它使用一个在无界队列中运行的工作线程。 (但请注意,如果此单个线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程。)保证任务按顺序执行,并且不会有多个任务处于活动状态在任何给定的时间。与其他等效的newFixedThreadPool(1)不同,保证返回的执行程序不可重新配置以使用其他线程。

这让我认为它需要多个任务,排队,并且一次只运行一个软件实例。正如你可能怀疑的那样,我正在写作,因为它没有这样做。它开始的任务和我提交的任务一样多(我知道,大多数人可能想要做的事情的相反问题)。非常感谢您对此问题的任何帮助,并提前感谢您。

0 个答案:

没有答案