[英]Proper way to set timeout on a method in Java
我在SO上查看了一些现有的答案,并且将Future与ExecutorService结合使用来将TimeUnit的超时设置为method。
但是我试图在我的服务实现中的方法上设置超时,这意味着调用者类正在使用接口。
所以我想避免在服务实现中实现可调用,因为我希望此方法在同一线程中执行。
还有其他方法可以在给定方法上设置超时或模拟超时吗?
您可以查看guava中的TimeLimiter
,它可以使用任何类并生成限时代理。 但是它仍然在内部使用线程池来等待Future
(至少是默认的SimpleTimeLimiter
实现)。
我想在同一个线程中运行方法,在给定的超时后,必须有另一个线程来中断它。 而且中断并不总是有效。 因此,线程池和Future
是唯一的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.