Java EJB中的线程生成库
允许在EJB中使用生成和管理线程的库吗 我编写了一个JavaSE库,其类如下:Java EJB中的线程生成库,java,multithreading,jakarta-ee,ejb,Java,Multithreading,Jakarta Ee,Ejb,允许在EJB中使用生成和管理线程的库吗 我编写了一个JavaSE库,其类如下: public class LibraryClass { public void longRunningMethod() { ExecutorService service = Executors.newFixedThreadPool(10); //schedule tasks service.shutdown(); try {
public class LibraryClass {
public void longRunningMethod() {
ExecutorService service = Executors.newFixedThreadPool(10);
//schedule tasks
service.shutdown();
try {
service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
EJB示例:
@Stateless
class Bean {
public void beanMethod() {
LibraryClass libraryClass = new LibraryClass();
libraryClass.longRunningMethod();
}
}
在EJB中使用这样的东西可以吗
该规范规定“企业bean不得尝试管理线程”,如果线程在EJB之外管理,甚至在开发人员无法控制的情况下(例如,在使用第三方库时),这是否仍然适用?通常,这一建议是正确的。这是一种糟糕的做法,因为您已经在一个“包含”的环境中运行,该环境已经为您完成了繁重的线程处理/线程池(分配)工作。如果您真的想要跨越线程,那么应该确保容器知道它们,或者向他提供构造,以便它能够处理和监视它。这是通过在Java中使用Executor服务实现的