我已经在 SO 上查看了一些现有的答案,并且我将Future与ExecutorService结合使用,将TimeUnit设置为方法的超时。
但是我试图在我的服务实现中的一个方法上设置超时,这意味着调用者类正在使用接口。
所以我想避免在我的服务实现中实现可调用,因为我希望这个方法在同一个线程中执行。
是否有其他方法可以在给定方法上设置超时或模拟超时?
我已经在 SO 上查看了一些现有的答案,并且我将Future与ExecutorService结合使用,将TimeUnit设置为方法的超时。
但是我试图在我的服务实现中的一个方法上设置超时,这意味着调用者类正在使用接口。
所以我想避免在我的服务实现中实现可调用,因为我希望这个方法在同一个线程中执行。
是否有其他方法可以在给定方法上设置超时或模拟超时?
您可以TimeLimiter
从guava看一下,它可以采用任何类并生成限时代理。但它仍然在内部使用线程池来等待Future
(至少是默认SimpleTimeLimiter
实现)。
我想在同一个线程中运行方法,你必须有另一个线程在给定超时后中断它。中断并不总是有效。因而线程池Future
是唯一的办法。