在Java中为方法设置超时的正确方法

时间:2012-10-03 21:34:21

标签: java

我已在SO上查看了一些现有答案,并且我已将FutureExecutorService结合使用,以TimeUnit方式设置超时方法。

但是我试图在我的服务实现中的方法上设置超时,这意味着调用者类正在使用接口。

所以我想避免在我的服务实现中实现callable,因为我希望这个方法在同一个Thread中执行。

是否有其他方法可以在给定方法上设置超时或模拟超时?

1 个答案:

答案 0 :(得分:1)

您可以查看来自TimeLimiter,它可以接受任何课程并生成限时代理。但它仍然在内部使用线程池等待Future(至少是默认的SimpleTimeLimiter实现)。

我想在同一个线程中运行方法,在给定超时后必须有另一个线程来中断它。中断并不总是有效。因此,线程池和Future是唯一的方法。