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