鉴于 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 源代码,并且没有单独使用 ForkJoinPool
、ForkJoinWorkerThreadFactory
或 ForkJoinWorkerThread
.
该机制可以添加到 EE 8,因为许多框架将利用 jdk8 功能,但我不知道它是否是规范的一部分。
关于java - 是否不鼓励在 Java EE 容器中使用 Java 8 并行流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845699/