【发布时间】:2016-04-03 13:20:33
【问题描述】:
在 Arun Gupta 的“Java EE 7 Essentials”一书中,我发现了这一点:
Java EE 容器(例如 EJB 或 Web 容器)不允许使用通用 Java SE并发API,例如java.util.concurrent.ThreadPoolExecutor, java.lang.Thread,或者直接java.util.Timer。
“不允许”是什么意思?我不明白容器如何禁止我创建新线程或使用标准 ExecutorService。我的标准线程会发生什么?谁能解释一下这些?
一些评论。我理解为什么使用ManagedExecutorService 而不是ExecutorService 例如可以更高效,我不明白如果我使用 SE 会出现什么问题
【问题讨论】:
-
容器正在运行你的代码,所以它当然可以禁止你使用某些类。您会收到错误消息,并且您的软件将无法运行。
-
我会得到什么类型的错误?我使用了标准的执行器服务,并且在生产中的多个系统上都可以正常工作
-
取决于容器,除了你不能确定它“工作正常”。
-
你能举一些例子吗?
-
如果容器有自己的
SecurityManager,它可以控制(和禁止)你的代码做的很多事情。如果您的代码看起来很好,那么就足够公平了,但至少您已经被警告过您不应该这样做。您的“工作正常”代码在哪个容器上运行?
标签: java jakarta-ee wildfly wildfly-8