Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Futures:有人能给我解释一下程序流程吗_Java_Java 7_Future - Fatal编程技术网

Java Futures:有人能给我解释一下程序流程吗

Java Futures:有人能给我解释一下程序流程吗,java,java-7,future,Java,Java 7,Future,我对javascript的承诺很满意。所以我想尝试Java期货(仍然停留在Java7中)。但这些Java未来对我来说毫无意义。以下是经过修剪和修改的版本: 为什么等待FutureTaskX系统输出未执行?我希望主线程循环并系统输出等待…,直到未来解决 我对解决这个问题的不同方法不感兴趣,只对代码的程序流程感兴趣。谢谢。代码永远不会到达“等待未来任务1”行 如果futureTask1.get在超时时间内未返回值,则抛出TimeoutException 只有当它返回而不抛出异常时,x和s不再为空 请

我对javascript的承诺很满意。所以我想尝试Java期货(仍然停留在Java7中)。但这些Java未来对我来说毫无意义。以下是经过修剪和修改的版本:

为什么
等待FutureTaskX
系统输出未执行?我希望主线程循环并系统输出
等待…
,直到未来解决


我对解决这个问题的不同方法不感兴趣,只对代码的程序流程感兴趣。谢谢。

代码永远不会到达“等待未来任务1”行

如果
futureTask1.get
在超时时间内未返回值,则抛出
TimeoutException

只有当它返回而不抛出异常时,
x
s
不再为空


请参阅。

因为
futureTask1.get(100L,TimeUnit.mills)
将抛出
TimeoutException
,因为
futureTask1
的睡眠时间是
500
millseconds,
futureTask2
也有同样的问题

可能您需要在
TimeoutException
catch子句中输出
Waiting for FutureTask
,在
finally
块中输出
sleep
,可能类似于:

try {
...
} catch (TimeoutException e) {
   System.out.println("Waiting for FutureTask");
} finally {
   Thread.sleep(100);
}

请养成使用大括号的习惯,即使是一行的块。它会帮你省下很多错误,让我们其他人更容易阅读。那个空的捕手挡让我不知所措。
Done1:false - 2:false
Done1:false - 2:false
Done1:false - 2:false
Done1:false - 2:false
Done1:false - 2:false
FutureTask1 output=pool-1-thread-2
Done1:true - 2:false
FutureTask1 output=pool-1-thread-2
Done1:true - 2:false
FutureTask1 output=pool-1-thread-2
FutureTask2 output=pool-1-thread-1
Done
try {
...
} catch (TimeoutException e) {
   System.out.println("Waiting for FutureTask");
} finally {
   Thread.sleep(100);
}