代码段:
// MainClass
public class DataStreamHandler {
Future<String> future = executor.submit(new JobConsumer());
try {
System.out.println("start future " );
String str = (String) future.get();
}
}
//Thread Class
public class JobConsumer implements Callable
{
public String call() {
//this logic listens to a stream and return.
return "JobConsumer Done";
}
此处,在收听流后,只有call()
返回。
但现在主线程打印了#34;开始未来&#34;没有call()
完成。我怎样才能确保&#34;开始未来&#34;仅在call()
完成后打印?
答案 0 :(得分:0)
你知道future.get()
做了什么以及它实际返回了什么?
好吧,首先它等待任务完成并返回任务的call
方法返回的值。在您的情况下,future.get()
将返回"JobConsumer Done"
。
在这两个陈述之后:
System.out.println("start future " );
String str = (String) future.get();
你可以先判断为什么开始未来的打印。