【问题标题】:Thread spawning libraries in EJBEJB 中的线程生成库
【发布时间】:2016-01-07 23:33:59
【问题描述】:

是否允许在 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 之外进行管理,这是否仍然适用,甚至可能不受开发人员的控制(例如在使用 3rd 方库时) ?

【问题讨论】:

    标签: java multithreading jakarta-ee ejb


    【解决方案1】:

    您好,总的来说,这个建议是正确的。这是一种不好的做法,因为您已经在“包含”环境中运行,该环境已经为您完成了繁重的线程处理/线程池(分配)。如果您真的想跨线程,请确保容器知道它们或向他提供构造,以便它可以处理和监视它。这通过使用 Java 中的 Executor Service 来实现。参见 herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      相关资源
      最近更新 更多