【发布时间】:2026-01-08 11:00:02
【问题描述】:
我有一些受时间限制的任务。任务是对服务器的请求,结果是响应。时间约为 10 毫秒。时间结束后,我想立即(或在 2-5 毫秒内)接收结果或为空。所以我将我的任务打包在 Callable 中,并天真地希望 Future.get() 超时后会在超时后立即抛出异常。但正如我看到的 Future.get() 超时不能提供这样的精度。在我的简单测试中,它甚至有 12 毫秒的偏差,并且没有高负载。现在我知道这是 Future 的正常行为。但是我的任务仍然存在,如果有更准确的超时时间会很棒。我听说过 Java Real Time System,但它对我来说似乎是非常复杂的工具。有没有 Future.get() 和 Java Real Time System 的简单替代方案?
【问题讨论】:
-
延迟的原因可能是任务没有足够频繁地检查中断状态。
-
你有什么资料可以解释为什么“这是未来的正常行为”吗?我很想知道我可以有多少变化。
标签: java multithreading real-time future