很难确切知道你的问题是什么,但我的猜测是你希望未来执行在一定时间后停止。
当然,.get 并不能做到这一点,.get 的超时是对等待未来结果的操作的超时,而不是对未来的超时。
你可以将 .get 与超时和未来取消结合使用,也许可以得到类似的效果,但是即使是未来取消也不能保证停止正在运行的线程。而 JVM 作者一直在消除停止运行线程的方式。
最理想的方式是编写流程,使其能够与关闭操作协作,等待某些关闭信号或达到一定时间限制后停止执行。这需要在进程之间进行大量通信,有时还需要进程能够同时等待多个线程(等待来自另一个进程的消息,并等待停止信号)。core.async 提供了一些很好的原始操作来实现这一点。