很难确切地知道您的问题是什么,但我的猜测是您希望如果在一定时间内未完成,则未来的执行停止。
当然,.get 不这样做,.get 的超时是对等待未来结果的操作的超时,而不是对未来的超时。
您可以将 .get 与超时和未来取消一起使用,或许可以得到类似的结果,但即使是未来取消也无法保证停止正在运行的线程。而且 JVM 开发者还在不断移除停止正在运行的线程的方法。
最佳方式是将正在运行的过程编写得能与关闭方式合作,比如等待某些关闭信号,或者在达到一定时间限制后停止执行。这需要在进程之间进行大量通信,有时还需要进程能够同时等待多个线程(等待来自另一个进程的消息,并等待停止信号)。core.async 提供了一些用于此目的的优秀原语。