在以下代码中,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
之后的观点应该是无法访问的。 最佳答案
scheduleAtFixedRate返回这样描述的Future
:
...任务只会通过取消或终止执行程序来终止。
因此,调用其get
方法将永远等待,因为:
Future.get()
等待必要的计算完成,然后检索其结果。
因此,您将永远等待Future.get()
方法返回。