【发布时间】:2020-11-18 05:06:53
【问题描述】:
我有一段如下代码
protected List<AMQMessage> waitForReceivedRawMessageFromActiveMq(AMQConsumerMessageListener listener) {
CompletableFuture<List<AMQMessage>> completableFuture = CompletableFuture.supplyAsync(() -> {
while (listener.getMessageList().isEmpty()) {}
return listener.getMessageList();
});
List<AMQMessage> rawMessage = Lists.newLinkedList();
try {
rawMessage = completableFuture.get(5000, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
e.printStackTrace();
}
return rawMessage;
}
它总是抛出TimeoutException,我不知道发生了什么。
但是当我在 IDEA 中切换调试点时,它就可以工作了。
有没有人可以帮我解释一下,拜托。
【问题讨论】:
-
你到底在用调试器做什么?
-
我在
return listener.getMessageList();行中添加调试点,以上代码工作正常。 -
你究竟做什么。您在该行放置一个断点,调试您的程序。那么是断点命中了吗?
-
没错。但是当我关闭断点时,上面的代码就不再起作用了。
-
什么是
AMQConsumerMessageListener?现在这个问题毫无意义,投票结束。
标签: java java-8 completable-future