Java EJB中的线程生成库

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 {

允许在EJB中使用生成和管理线程的库吗

我编写了一个JavaSE库,其类如下:

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服务实现的