ScheduleAtFixedRate未使用Future java 8提供输出

问题描述 投票:3回答:3

在下面的代码中,scheduleAtFixedRate无休止地运行。

所以问题是:

为什么java提供无限的线程执行方案?

Runnable task1 = () -> System.out.println("Hello Zoo");
Future<?> result = service1.scheduleAtFixedRate(task1, 8, 2, TimeUnit.SECONDS);
System.out.println(result.get());
System.out.println(result.isDone());

该程序从不打印result.get()的输出,该输出应为null或System.out.println(result.isDone());应为0。

所以我在调用scheduleAtFixedRate之后的代码应该是无法访问的。

java concurrency java-8 scheduled-tasks java.util.concurrent
3个回答
6
投票

scheduleAtFixedRate返回如下描述的Future

......任务只能通过取消或终止执行人来终止。

所以调用它的get方法将永远等待,因为:

Future.get()

如果需要等待计算完成,然后检索其结果。

因此,您将永远等待Future.get()方法返回。


0
投票

方法

Future.get()

阻塞直到进程完成,因此您的代码示例将永远不会执行最后两行。如果删除最后一行,则应在输出中看到false。


-2
投票

我从互联网和oracle doc得到的答案是: -

首先: - 你可以创建一个运行无限次的程序,如qazxsw poi code.But java没有显示警告,破坏条件应该是他们的。

第二: - 假设你想创建一个while(true)线程,然后使用该方法。

第三: - 如果你想在一定时间后终止使用另一种方法,请单击: -

system or daemon

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.