我刚听说在JavaEE容器中生成自己的线程是一种糟糕的做法。自从几个月前我开始学习JavaEE 6开发以来,我已经这样做了一段时间。我一直在做的事情是:
1.)从网络应用主入口点(实现ServletContextListener的对象),
2.)我在contextInitialized方法中创建了一对线程来为web应用程序后台运行一些异步后台任务。
3.)我在contextDestroyed方法中清理资源。
有没有更好的方法呢?如何在不产生线程的情况下创建异步后台任务?不使用线程的原因是什么?
我使用的是EJB3.0和JavaEE6
发布于 2012-05-23 11:21:22
手动派生线程确实是一种糟糕的做法,因为您希望Java容器在应用程序代码外部为您管理线程池。Oracle6有一个称为@Asynchronous的注释专门用于此目的,而JavaEE有一个official tutorial。
发布于 2012-06-07 06:10:56
在EJB3.1之前,解决方法是创建JMS和MDB来在EJB容器中执行异步作业,这是相对繁重的,并且依赖于消息代理。@Asynchronous提供了一种更简单方法来处理异步作业。
发布于 2014-01-02 18:05:08
在JavaEE7中,我们来看看新的Concurrency Utils API规范。
https://stackoverflow.com/questions/10712627
复制相似问题