编程语言
首页 > 编程语言> > ScheduleAtFixedRate不使用Future Java 8提供输出

ScheduleAtFixedRate不使用Future Java 8提供输出

作者:互联网

在以下代码中,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返回的期货描述如下:

… the task will only terminate via cancellation or termination of the executor.

因此,调用其get方法将永远等待,因为:

Future.get()

Waits if necessary for the computation to complete, and then retrieves its result.

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

标签:java-8,concurrency,scheduled-tasks,java-util-concurrent,java
来源: https://codeday.me/bug/20191111/2017671.html