【发布时间】:2015-10-21 13:09:24
【问题描述】:
我们在 Weblogic 服务器上部署了一个 SOAP 网络服务,流程如下。
SOAP 客户端将向 Web 服务发送消息,Web 服务验证该消息并发送一个确认作为服务的响应。但是,假设在后台执行 SocketConnection 以进一步异步处理消息。
已经提供的实现是使用ExecutorService.newFixedThreadPool 在后台生成一个ChildThread。这是正在使用的代码(并非所有 webservice 实现文件的代码都在此处发布)。
if ("103".equals(requestType)) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(new MessageProcessing103(coreMsg, otherDetails));
} else if ("104".requestType) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(new MessageProcessing104(coreMsg, otherDetails));
}
通过上述实现,可伸缩性绝对是一个问题,但我们现在可以接受它。你能帮忙解决以下问题吗
- 由于后台线程长期存在,这是否意味着将使用同一个衍生线程来执行所有请求?
- 如果在几秒内有两个请求进入,第二个请求是处于等待状态还是会产生新线程?
- 我们不会关闭执行器,那么在这种情况下会遇到什么问题?
【问题讨论】:
标签: java multithreading jakarta-ee