如何在应用服务器上编写并发(创建线程)?

时间:2012-02-14 10:03:59

标签: java java-ee concurrency

我知道网络上有一些关于这个主题的消息来源,但令我困惑的是,每个应用服务器似乎都有自己的测量方法来处理并发和提供自己的线程池。

在应用程序服务器上自己创建线程是否为No-Go? (例如新的Thread()...) 如果是,是否存在与使用的应用程序服务器无关的通用方法?

3 个答案:

答案 0 :(得分:0)

EJB规范为EJB容器分配管理线程的责任。

允许企业bean实例创建和管理线程会干扰容器控制其组件生命周期的能力。 线程管理不是业务功能,它是一个实现细节,通常很复杂且特定于平台。

让容器管理线程可以减轻企业bean开发人员处理线程问题的麻烦。多线程应用程序仍然可行,但多线程控制位于容器中,而不是企业bean中。

来源:http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html#threads

答案 1 :(得分:0)

EJB 3.1引入了@Asynchronous注释,允许您在由容器管理的单独线程中运行一些代码。 Howto here.

答案 2 :(得分:0)

当您在EJB中时,不应创建自己的线程。实际上,EJB 3.1为此目的引入了@Asynchronous注释。以前版本的WebSphere和WebLogic实现了WorkManager,这是另一个特殊标准(最终放弃了JSR 237,最终放弃了标准),用于可以从EJB启动的工作线程。