在J2EE应用程序中使用WorkManagr API是否可行?

时间:2014-10-10 13:43:28

标签: java java-ee concurrency java.util.concurrent

J2EE规范说不建议在应用程序逻辑中创建或生成用户定义的线程。我理解的原因是为了避免资源争用,同步问题和内存泄漏。

但它也建议使用ManagedExecutorService或WorkManager API实现。这两种实现都会产生线程。

那么如何使用这些API并且不直接使用Threads?

1 个答案:

答案 0 :(得分:0)

首先,WorkManager API仅适用于JCA resource adapters。因此,我主要讨论ManagedExecutorService,但我所说的大多数内容也适用于WorkManager。

使用ManagedExecutorService / WorkManager和创建自己的线程之间的区别在于应用程序服务器管理底层线程。这意味着您使用此API的线程,更常见的是通过javax.enterprise.concurrent.*类,无论是在使用ManagedExecutorService提交异步任务的情况下隐式提供,还是通过ManagedThreadFactory明确提交的线程,都将与应用程序服务器提供的服务保持一致,特别是事务管理,安全性,资源管理等。