java - 是否不鼓励在 Java EE 容器中使用 Java 8 并行流?

标签 java jakarta-ee ejb java-8 java-stream

鉴于 spawning threads in Java EE containers are discouraged .会使用 Java 8 parallel streams ,这可能会在 Java EE 中产生线程?

最佳答案

注意,优雅降级到单线程是不可用的。我还认为这是因为 Shorn 的回答和邮件列表讨论,但我发现不是在研究 this question 时.该机制不在 Java EE 7 规范中,也不在 glassfish 4.1 中。即使另一个容器这样做,它也不是可移植的。

您可以通过调用以下方法进行测试:

@Singleton
public class SomeSingleton {
    public void fireStream() {
        IntStream.range(0, 32)
            .parallel()
            .mapToObj(i -> String.format("Task %d on thread %s", 
                i, Thread.currentThread().getName()))
            .forEach(System.out::println);
    }
}

你会得到类似的东西:

Info:   Task 20 on thread http-listener-1(4)
Info:   Task 10 on thread ForkJoinPool.commonPool-worker-3
Info:   Task 28 on thread ForkJoinPool.commonPool-worker-0
...

我还检查了 glassfish 4.1.1 源代码,并且没有单独使用 ForkJoinPoolForkJoinWorkerThreadFactoryForkJoinWorkerThread .

该机制可以添加到 EE 8,因为许多框架将利用 jdk8 功能,但我不知道它是否是规范的一部分。

关于java - 是否不鼓励在 Java EE 容器中使用 Java 8 并行流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845699/

相关文章:

java - 我的 SOA 项目使用哪些工具?

spring - 在 EJB 3.1 或 CDI 中定义并注入(inject)映射

java - EJB工厂类

Java 控制台程序不让我输入字符串

java - 使用高级搜索运算符使用 Restful API 向搜索引擎发送查询

java - JBatch 上的 JobRepository

jakarta-ee - 消息驱动的 Bean 是否需要激活规范?

java - 从 JSF 中的 EJB 处理验证错误

java - Spring - 我的配置类应该在多模块项目中的什么地方?

java - 将文件从基于 Web 的应用程序上传到 Linux 服务器