【发布时间】:2014-05-14 09:14:54
【问题描述】:
(请不要将此重复标记为我的 previous question,它们不是 - 我正在寻找 单线程 解决方案)。
我需要一种简单的方法来限制 java 中某些方法的执行时间。
理想情况下我认为可以做些什么:
- 我调用了一个函数或方法
- 如果给定的时间过去了而没有返回,
- 出现异常。
但任何其他解决方案都可以。为了我。我需要的是几乎等同于 unix 上的 alarm() libc 调用。有可能吗?
我需要一个单线程解决方案。多线程解决方案很简单。
【问题讨论】:
-
你运气不好。仅当您手动轮询是否发生超时时才有可能,并且只有当您的任务被划分为足够小的步骤时才有可能。多线程解决方案有什么问题,即您实际上是否有要解决的问题,或者您只是在问“我们可以这样做吗?”问题?
-
@Kayaman 线程由这里的外部实体处理,它对我的意图一无所知。
-
最好还是提出实际问题,而不是尝试解决问题。否则你可能会得到一个愚蠢的解决方案来优雅地解决问题。
-
@Kayaman 我们对“优雅的解决方案”的看法不同。对我来说,如果我只需要一个超时的异常,抛出警报异常是优雅的,而不是像创建新线程那样难的男孩。我最不想就应该使用线程进行毫无意义的辩论。
-
但是 Java 没有这些。所以你优雅的解决方案不是解决方案,而是一种幻觉。