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方法将永远等待,因为:
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