小编Mis*_* D.的帖子

为什么我的 CompletableFuture 代码在 Java 8 中运行而不在 Java 11 中运行?

为什么这段代码在 Java 8 和 Java 11 中表现不同?

private static String test2() {
    CompletableFuture
            .runAsync(() -> IntStream.rangeClosed(1, 20).forEach(x -> {
                try {
                    Thread.sleep(500);
                    System.out.println(x);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }));

    return "Finish";
}
Run Code Online (Sandbox Code Playgroud)

我希望它打印完成,然后以 500 毫秒的间隔打印从 1 到 20 的数字,然后停止执行,它在 Java 8 中正常工作。

然而,当我在 Java 11 上运行完全相同的方法时,它打印 Finish 并终止,而没有调用 runAsync(...) 代码。我设法通过添加这样的 ExecutorService 来启动它

private static String test2() {

    final ExecutorService executorService = Executors.newFixedThreadPool(10);
    CompletableFuture
            .runAsync(() -> IntStream.rangeClosed(1, 10).forEach(x -> {
                try {
                    Thread.sleep(500);
                    System.out.println(x);
                } catch (InterruptedException e) { …
Run Code Online (Sandbox Code Playgroud)

java multithreading asynchronous completable-future java-11

7
推荐指数
1
解决办法
373
查看次数

创建性设计模式在依赖注入环境(如 SpringBoot)中无用吗?

我正在研究设计模式,有一刻让自己想到了一个想法,即工厂和抽象工厂等大多数创建模式在依赖注入环境的范围内并不是那么有用,在这种环境中我们通常不使用new关键字创建对象,而是“从某种上下文中注入”它们。我也明白我很可能是错的,我需要一个很好的解释来把事情弄清楚。

java oop design-patterns dependency-injection spring-boot

5
推荐指数
0
解决办法
78
查看次数

我需要 @Transactional 和 ElasticsearchRepository 吗?

我有一个问题,我是否需要在 Spring Boot 中使用 @Transactional 注释使用 ElasticsearchRepository 的 findBy.. 方法的方法?

spring spring-transactions elasticsearch spring-boot

1
推荐指数
1
解决办法
990
查看次数