我是java中并发和线程的新手,我有以下场景 -
Function1(从队列中获取下一个任务并使用任务调用 function2)然后 Function2(调用 Function Run 以运行此任务)然后 Run(函数运行正在使用具有固定线程池的执行器服务提交任务,代码如下所示)
ExecutorService exeService = Executors.newFixedThreadPool(3);
private void run(Task task){
Abstract batchExecutor = getBatchExecutor(param1,param2, param3, param4, task);
Future<Void> future = exeService.submit(batchExecutor);
while (!future.isDone()) {
if (isStopRequested.get()) {
try {
future.get(5, TimeUnit.MINUTES);
} catch (TimeoutException e) {
e.printStackTrace();
}
throw new InterruptedException("message");
}
Thread.sleep(3000);
}
future.get();
Map<String, Result> submittedObjects = batchExecutor.getSubmittedObjects();
storeSubmittedObjects(submittedObjects);
}
我的问题是即使在声明线程池之后,任务仍然以顺序方式运行。我怎样才能让它并行,以便一旦有另一个运行调用它应该使用池中的空闲线程并提交任务?
所有这些函数都没有返回类型。