gpt4 book ai didi

Java : ExecutorService : newFixedThreadPool

转载 作者:行者123 更新时间:2023-11-30 03:04:40 26 4
gpt4 key购买 nike

这可能是一个有点老的问题。我对 Jboss 环境中的 ExecutorService 工作感到困惑。我使用了一些示例代码,其中我使用 ExecutorService 提交任务,一切完成后我关闭执行程序。

我面临的问题是提交一个请求后,后续请求出现以下异常。原因:java.util.concurrent.RejectedExecutionException:任务 java.util.concurrent.FutureTask@518ad6a2 被 java.util.concurrent.ThreadPoolExecutor@72114f80 拒绝[正在关闭,池大小 = 1, Activity 线程 = 1,已排队任务 = 0,已完成的任务 = 0]

ExecutorService executorService = Executors.newFixedThreadPool(3);

@POST
@Path("/request")
public Response checkAsync(final MultiMedia multiMedia) {
final Random rand = new Random();
final String random = String.valueOf(rand.nextInt(50) + 1);

multiMediaJobs.put(random, multiMedia);

final String jobId = "{ 'jobId' : " + random + "}";

executorService.submit(new Runnable() {
@Override
public void run() {
boolean result = veryExpensiveOperation(jobId);
if (result) {
try {
MultiMedia multiMedia = (MultiMedia) multiMediaJobs.get(random);
multiMedia.getMediadata().getMetadata()
.setAssetId(random);

final String uri = multiMedia.getCallback().getUri()+multiMedia.getCallback().getResource();

RestTemplate restTemplate = new RestTemplate();
String code = restTemplate.postForObject(uri,
multiMedia, String.class);

System.out.println(code);
} finally {
logger.debug("Map size: " + multiMediaJobs.size());
logger.debug("Time: "+System.currentTimeMillis());
multiMediaJobs.remove(random);
}
}
}

private boolean veryExpensiveOperation(String jobId) {
try {
Thread.sleep(7000);
} catch (InterruptedException e) {
e.printStackTrace();
}

logger.debug("Task is processed fully");

return true;
}
});

executorService.shutdown();
try {
executorService.awaitTermination(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Response.status(Status.ACCEPTED)
.entity(commonHelper.toJSON(jobId)).build();
}

JBOSS环境下真的需要调用shutdown吗?如果我删除它,它就接受我的所有请求。我在这里看到的示例只是主要方法。我只是想知道它在实际应用中是如何工作的。

如果我误解了某些概念,请原谅我。

最佳答案

问题是您关闭了ExecutorService。因此任何后续提交的任务都会立即被拒绝。

关于Java : ExecutorService : newFixedThreadPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com